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

内容发布更新时间 : 2024/12/27 15:28:20星期一 下面是文章的全部内容请认真阅读。

count2=count2+2; //如果if 成立 则此处 关键字移动 for(j=i-2;(L[0]

printf(\直接排序后的结果是:\\n关键字比较了%d次\\n关键字移动了%d次\\n \

for(i=2;i<=num;i++) { printf(\ if(i==0) printf(\ } }

void zbpx(int L[MAXSIZE]) //折半插入排序 { creatdata(); int i,j,m,low,high; //定义标志

for(i=2;i<=num;++i) // 从第二个开始插入 {

L[0]=L[i]; count4++; //此处关键字移动 low=1,high=i-1; while(low<=high) //寻找插入位置

{

m=(low+high)/2; //折半

找到位置

if(L[0]

for(j=i-1;j>=high+1;j--) { L[j+1]=L[j]; //记录后移 count4++; //此处 关键字 移动 } L[high+1]=L[0]; //插入记录 count4++; //此处关键字 移动 }

printf(\折半插入排序后的结果是:\\n关键字比较了%d次\\n关键字移动了%d次\\n \

for(i=2;i<=num;i++) { printf(\ if(i==0) printf(\ } }

void xepx(int L[MAXSIZE],int num) //希尔排序 { creatdata(); int temp; int i,j,d; d=num/2; //确定第一次分组 while(d>=1) //在第一组内进行向后的比较 {

for(i=d+1;i<=num;i++) //对各组进行排序 { temp=L[i]; j=i-d; count6++; //如果while(d>=1)成立 则此处有关键字的移动 while((j>0)&&(temp

for(i=2;i<=num;i++) { printf(\ if(i==0) printf(\ } }

void mppx(int L[MAXSIZE]) //冒泡排序 { creatdata(); int flag=1; int temp;

for(int i=1;i<=num && flag!=0;i++) //第一层循环排序 {

flag=0;

for(int j=1;j<=(num-i);j++) //第二层循环排序 {

if(L[j]

temp = L[j]; L[j] = L[j+1]; L[j+1] = temp; //进行排序 flag=1; count8=count8+2; //如果if成立 则此处有关键字的移动 } count7++; //由于内部排序上面的if语句 此处有关键字的比较 } }

printf(\冒泡排序后的结果是:\\n关键字比较了%d次\\n关键字移动了%d次\\n \

for(i=1;i

void xzpx(int L[MAXSIZE]) //选择排序 { creatdata(); int i,j,k,temp; for(i=1;i