一、实现思想
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:我这里显示了行号,复制也会一同复制过去。你应该会竖直选择然后删除吧)