一、实现思想

1、假设已经有一个有序区(没有的话通常选择第一个元素作为有序区),然后从无序区中选一个元素和有序区进行比较,找到合适位置,最后插入

 

二、实现例子(以一个数组为例)

 

 

 

 

三、实现代码

 1 #include <stdio.h>
 2 void insert_sort(int p[], int length)
 3 {
 4     int i, j;
 5     int temp; //作为一个中间值,这个很重要,也是巧妙的地方,为有序区往后移,提供一个空格
 6     for (i = 1; i < length; i++)
 7     {
 8         temp = p[i];
 9         for (j = i - 1; j >= 0 && temp < p[j]; j--)
10             p[j + 1] = p[j];
11         p[j + 1] = temp;
12     }
13 }
14 int main(void)
15 {
16     int array[5] = {12, 30, 25, 9, 18};
17     for (int i = 0; i < 5; i++)
18         printf("%d    ", array[i]);
19     insert_sort(array, 5);
20     printf("\n");
21     for (int i = 0; i < 5; i++)
22         printf("%d    ", array[i]);
23 }
24 /* 
25 输出
26 ————————————————————————————————
27 12    30    25    9    18    
28 9    12    18    25    30
29 ————————————————————————————————
30  */

(ps:我这里显示了行号,复制也会一同复制过去。你应该会竖直选择然后删除吧)

 

posted on 2020-08-01 00:16  Coderon  阅读(149)  评论(0编辑  收藏  举报