数据结构-课程设计报告(排序算法比较) 下载本文

内容发布更新时间 : 2024/6/29 21:58:06星期一 下面是文章的全部内容请认真阅读。

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]temp) { t=L[j]; L[j]=L[pos]; L[pos]=t; pos=j; flag=0; change2++;break; 换,flag置0,记录新的位置,偏移量增加 } } } }while(flag==0); for(i=0;i<=7;i++) printf(\ \ printf(\ return pos; }

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.实验数据分析:

//只读 //失败

//中止程序

//从文