内容发布更新时间 : 2024/11/7 22:45:05星期一 下面是文章的全部内容请认真阅读。
count9++; //此处有关键字的比较 if(i!=k) { temp=L[i]; L[i]=L[k]; L[k]=temp; //将关键字最小记录与还未排序的第一个数交换 count10+=2; //如果if成立 则关键字有移动(!!!此处有问题 显然if肯定有成立的时候 所以count10会有值 但是测试结果一直是0 搞不清原因) } } } printf(\选择排序后的结果是:\\n关键字比较了%d次\\n关键字移动了%d次\\n \
for(i=1;i /*int partition(int L[MAXSIZE],int low,int high) { int temp,t; int i,j,pos,flag; int change1,change2; temp=L[1]; //保存该元素的值 pos=low; //记录当前位置 change1=change2=0; //记录每次比较的起始元素,距离区间头或尾的偏移量 do { flag=1; //没有元素交换 for(i=high-change1;i>=pos+1;i--) //在左区间进行比较 { if(L[i] void kspx(int L[MAXSIZE],int b,int t) { creatdata(); int i; if(b 行划分 //记录新的 //如果 //从右区间 //如果有元素交 //对区间(b,t) //左区间进 kspx(L,i+1,t); //右区间进行划分 } } */ void compare(int L[MAXSIZE]) { printf(\排序方式 直接 折半 希尔 冒泡 选择\\n\ printf(\比较次数 M M M M M \\n\ printf(\移动次数 M M M M M \\n\} void menu(int L[MAXSIZE]) { int x; printf(\ \\n1 直接排序 4 冒泡排序 7比较数据统计\\n\ printf(\ \ printf(\ \\n2 折半排序 5 快速排序(未完成) 0 退出\\n\ printf(\ \ printf(\ \\n3 希尔排序 6选择排序\\n\ printf(\ \ printf(\请输入对应的序号 查看结果 \\n\ scanf(\ if(x>=0&&x<=7) { switch(x) { case 0:exit(0); case 1:zjpx(L);menu(L);break; case 2:zbpx(L);menu(L);break; case 3:xepx(L,num);menu(L);break; case 4:mppx(L);menu(L);break; // case 5:kspx(L,0,10);menu(L);break; case 6:xzpx(L);menu(L);break; case 7:compare(L);menu(L);break; } } else { printf(\输入有误!\ menu(L); } } void main() { creatdata(); FILE* fp; int i=0; fp=fopen(\ if(fp==NULL) { printf(\错误!\ exit(1); } while(!feof(fp)) 件读出数据 fscanf(fp,\ fclose(fp); printf(\随机生成的数为:\\n\ for(i=0;i 3.实验数据分析: //只读 //失败 //中止程序 //从文