随机数初始化数组然后用选择法(三种,细微的区别)对数组进行排序
#include<stdio.h> #include<stdlib.h> #include<time.h>//时间头文件 int main() { time_t ts;//设置时间变量 unsigned int randdata = time(&ts);//获取时间,转换为无符号int srand(randdata);//设置随机数种子 int a[10]; //用随机数初始化数组 for(int i=0;i<10;i++) { a[i] = rand()%100;//0--99 printf("%d,%x\n",a[i],&a[i]); } printf("-----------------------------------------------------\n"); //下面的代码块是求最大值 { int max;//最大值下标 max = 0;//假设a[0]最大 //求最大值 for(int i=1;i<10;i++) { printf("%d,%d,%d,%d\n",i,max,a[i],a[max]); if(a[i]>a[max]) { max = i; } } printf("最大值a[max]=%d\n",a[max]); } //下面的代码块是选择排序 { for(int i=0;i<9;i++) { int min = i;//假设是当前最小值的下标 for(int j=i+1;j<10;j++) { if(a[j]<a[min]) { min = j; } } if(min!=i)//下标相同表明下标没有交换,就无需交换数据 { int temp = a[min];//temp保存最小值 a[min] = a[i]; a[i] = temp;//数据交换 } } printf("第一种选择排序后数组的结果如下:\n"); for(int i=0;i<10;i++) { printf("%d\t",a[i]); } } { for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(a[i]>a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } printf("第二种选择排序后数组的结果如下:\n"); for(int i=0;i<10;i++) { printf("%d\t",a[i]); } } { int min,temp; for(int i=0;i<9;i++) { min = i; for(int j=i+1;j<10;j++) { if(a[j]<a[min]) { min = j; } } temp = a[min]; a[min] = a[i]; a[i] = temp; } printf("第三种选择排序后数组的结果如下:\n"); for(int i=0;i<10;i++) { printf("%d\t",a[i]); } } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。