vlambda博客
学习文章列表

C++编程基础题解:选择排序和插入排序

选择基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。对于样例数据:

初 始 关键字 [49 38 65 97 76 13 27 49]

第一趟排序后 13[38 65 97 76 49 27 49]

第二趟排序后 13 27[65 97 76 49 38 49]

第三趟排序后 13 27 38 [97 76 49 65 49]

第四趟排序后 13 27 38 49 [76 97 65 49]

第五趟排序后 13 27 38 49 49 [97 65 76]

第六趟排序后 13 27 38 49 49 65 [97 76]

第七趟排序后 13 27 38 49 49 65 76 [97]

最后排序结果 13 27 38 49 49 65 76 97

选择排序参考程序:

插入排序思想:

插入排序和打牌有点相似,为了方便打牌,抓牌时一般一边抓牌一边按花色和大小插入恰当的位置,当抓完所有的牌时,手中的牌便是有序的,这种排序方法即插入排序。

首先对数组的头两个元素进行排序,然后根据前两个元素排序的情况再把第三个元素插入到相应的位置,但要注意一个重要的问题:在插入这个元素前,应当先将将它后面的所有元素后移一位,以保证插入位置的原元素不被覆盖。

例如:设n=8,数组中8个元素是: 36,25,48,12,65,43,20,58,执行插入排序程序后,其数据变动情况:

第0步:[36] 25 48 12 65 43 20 58

第1步:[25 36] 48 12 65 43 20 58

第2步:[25 36 48] 12 65 43 20 58

第3步:[12 25 36 48] 65 43 20 58

第4步:[12 25 36 48 65] 43 20 58

第5步:[12 25 36 43 48 65] 20 58

第6步:[12 20 25 36 43 48 65] 58

第7步:[12 20 25 36 43 48 58 65]

插入排序参考程序: