(*compare)++; (*move)++;
r[i]=r[j];//发现轴右侧的某数比轴值小,将其前置 } while((i r[j]=r[i];//发现轴左侧的某数比轴值小,将其后置 } } r[i]=zhou;//最后确定轴的位置 return i; } void Qsort(int r[],int i,int j,int* compare,int* move)//快速排序 { if(i int centre=Partion(r,i,j,compare,move); Qsort(r,i,centre-1,compare,move); Qsort(r,centre+1,j,compare,move); } } 5.选择排序:从待排序的记录序列中选择关键码最小的记录并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个记录为止 void Selectsort(int r[],int n,int* compare,int* move)//选择排序 { *compare=0; *move=0; for(int i=0;i int min=i; for(int j=i+1;j (*compare)++; if(r[j] if(min!=i) { (*move)+=3; int Min; Min=r[min]; r[min]=r[i]; r[i]=Min; } } } 4 程序运行结果 4.1主函数流程图 4.2程序运行框图 5 实验心得 1.调试时出现的问题及解决的方法 在初期构思代码的时候,首先构造了各种算法的基本实现代码,封装成类,已经能够实现七种排序的基本功能,并且测试无误。 之后考虑如何能简化代码以实现多达七种排序算法的简单调用、乱序和顺序以及逆序数据的分别排序和性能指标统计(算法移动次数和比较次数的精确统计)。 2.心得体会 程序的优化是一个艰辛的过程,如果只是实现一般的功能,将变得容易很多,当加上优