C的数据结构八种排序算法的-代码及分析
下载后可任意编辑 二、选择排序 ①初始状态:无序区为R[1n],有序区为空。 ②第1趟排序 在无序区R[1n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[11]和R[2n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。 …… ③第i趟排序 第i趟排序开始时,当前有序区和无序区分别为R[1i-1]和R[in](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1i]和R[i+1n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区.这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。 优点:稳定,比较次数与冒泡排序一样; 缺点:相对之下还是慢。 初始关键字 [49 3865 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 2738 [97 76 49 65 49] 第四趟排序后 13 2738 49 [49 97 65 76] 第五趟排序后 13 2738 49 49 [97 97 76] 第六趟排序后 13 2738 49 49 76 [76 97] 第七趟排序后 13 2738 49 49 76 76 [ 97] 最后排序结果 13 2738 49 49 76 76 97 #include using namespace std; void main() { int i,j,k,t; int R[8]={49,38,65,97,76,13,27,49}; for(i=0;i<7;i++) { k=i; for(j=i+1;j<8;j++) if(R[j]