}
for(i=1;i<=L;i++) {
case '1':Insertsort();break; case '2':Shellsort();break; case '3':Bubblesort();break;
printf(\尚未排序的数据为(回车继续):\ for(k=1;k<=L;k++)
printf(\ num=0;QuickSort(1,L); break;
getchar();printf(\R[i]=s[i]; switch(ch2)
case '4':
case '5':Selectsort();break; case '0':ch1='n';break;
default:printf(\输入错误!请重新输入!\\n\\t\\t\
case '6':Heap();break;
if(ch2!='0') {
if(ch2=='2'||ch2=='3'||ch2=='4'||ch2=='5'||ch2=='6'||ch2=='7'||ch2=='8') } }
8
printf(\排序演示输出完毕!\\n\q=getchar(); if (q!='\\xA') {
getchar();ch1='n'; }
printf(\请按回车键返回主菜单...\
}
开始 输入要排序的一组元素 int i,j,k,m=0 k=1 N k<=L Y printf(“],”R[k]);
k++ getchar(); i=2 i<=L Y Y Maltiplex i++ N printf(“/n/n”); Maltiplex 结束
9
4.22直接排序关键字比较次数和移动次数的流程图
此函数void Insertsort()的程序代码如下:
void Insertsort()//直接插入排序 { int i,j,k,m=0; printf(\尚未排序的数据为(回车继续):\
for(k=1;k<=L;k++)
printf(\getchar(); printf(\for(i=2;i<=L;i++) { if(R[i] { times++; changes++; R[j+1]=R[j];j--; } R[j+1]=R[0]; changes++; } m++; times++; } printf(\ printf(\最终排序结果为:\ for(i=1;i<=L;i++) printf(\printf(\ 10 printf(\直接插入排序的比较次数为%d\ printf(\直接插入排序的移动次数为%d\ times=0; changes=0; } 开始 输入要排序的一组元素 初始化变量i,j,gap=L/2,m=0 m小于gap i小于元素总个数 j=i+gap j小于元素总个数 第i个元素大于第j个元素 交换第i个元素第j个元素 gap为原来的一半 11
相关推荐: