内容发布更新时间 : 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