下载后可任意编辑二、选择排序① 初始状态:无序区为 R[1
n],有序区为空
② 第 1 趟排序 在无序区 R[1
n]中选出关键字最小的记录 R[k],将它与无序区的第 1 个记录 R[1]交换,使 R[1
1]和 R[2
n]分别变为记录个数增加 1 个的新有序区和记录个数减少 1 个的新无序区
……③ 第 i 趟排序 第 i 趟排序开始时,当前有序区和无序区分别为 R[1
i-1]和 R[i
n](1≤i≤n-1)
该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第 1 个记录 R[i]交换,使R[1
i]和 R[i+1
n]分别变为记录个数增加 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