C++编程基础题解:插入排序
题目描述
从键盘输入n个正整数,用插入排序法将他们按从小到大的顺序排列后输出。
输入
输入文件包含两行,第1行为一个正整数n,n<=10000,第2行为n个整数。
输出
输出文件仅一行,为排好序的n个数。数字之间用空格分开
样例输入
8
36 25 48 12 65 43 20 58
样例输出
12 20 25 36 43 48 58 65
插入排序思想:
插入排序和打牌有点相似,为了方便打牌,抓牌时一般一边抓牌一边按花色和大小插入恰当的位置,当抓完所有的牌时,手中的牌便是有序的,这排序方法即插入排序。
首先对数组的头两个元素进行排序,然后根据前两个元素排序的情况再把第三个元素插入到相应的位置,但要注意一个重要的问题:在插入这个元素前,应当先将将它后面的所有元素后移一位,以保证插入位置的原元素不被覆盖。
例如:设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]
参考程序和运行结果: