下载后可任意编辑二、选择排序① 初始状态:无序区为 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<7;i++){k=i;for(j=i+1;j<8;j++) if(R[j] #include int main(void) { int data[10] = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81}; int temp[10][10] = ; int order[10] = ; int i, j, k, n, lsd; k = 0; n = 1; printf("/n 排序前: "); for(i = 0; i < 10; i++) printf("%d ", data); putchar('/n'); while(n <= 10) { for(i = 0; i < 10; i++) { lsd = ((data / n) % 10); temp[lsd][order...