(只是一个数组题目罢了)
直接插入排序,是指将无序序列中的各元素依次插入到已经有序的数组中。
假设数组中前i-1元素已经有序,现在要将线性表中第i个元素插入到前面的有序子表中,插入过程如下:
以长度为n=8的序列(13,6,1,31,9,27,5,11)的插入排序过程做示范: 第1趟:将数组第2个元素6向前插入后,则数组中元素为(6,13,1,31,9,27,5,11); 第2趟:将数组第3个元素1向前插入后,则数组中元素为(1,6,13,31,9,27,5,11); 第3趟:将数组第4个元素31向前插入后,则数组中元素为(1,6,13,31,9,27,5,11); …… 第7趟:将数组第8个元素11向前插入后,则数组中元素为(1,5,6,9,11,13,27,31); 总之,共执行7趟 *** 作,可将有n=8个元素的数组排成有序序列。
插入排序从第二个数开始,拿出第二个数向前进行插入排序,一直到最后一个数向前做插入排序,要求输出每趟插入排序的结果。
测试输入:
10
47 47 21 69 2 8 76 50 9 47
预期输出:
47 47 21 69 2 8 76 50 9 47
21 47 47 69 2 8 76 50 9 47
21 47 47 69 2 8 76 50 9 47
2 21 47 47 69 8 76 50 9 47
2 8 21 47 47 69 76 50 9 47
2 8 21 47 47 69 76 50 9 47
2 8 21 47 47 50 69 76 9 47
2 8 9 21 47 47 50 69 76 47
2 8 9 21 47 47 47 50 69 76
提示: 如果有10个整数,要求输出每趟插入排序共9趟的结果。
这里我调用了自定义函数来实现程序,真正编写时可以不用函数。具体怎么做,就请读者自己思考啦。
编写程序:
#include#define N 100 int ONE (int a[],int n) { int i,m; for (m=2;m =1;i--) { if (a[0]
运行结果:
运行成功!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)