C插入排序

来源:互联网 发布:c语言程序员面试题 编辑:程序博客网 时间:2024/05/29 09:05

算法步骤:

1.从第一个元素开始,该元素可以认为已经被排序

2.取出下一个元素,在已经排序的元素序列中从后向前扫描

3.如果该元素(已排序)大于新元素,则该元素移到下一个位置

4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

5.将新元素插入到该位置后

6.重复步骤2~5


实例:

#include <stdio.h>void insertsort(int *data, int size){int i, j;int tmp;for (i = 1; i<size; i++){tmp = *(data + i);for (j = i; j>0 && *(data + j - 1)>tmp; j--)*(data + j) = *(data + j - 1);*(data + j) = tmp;}}void displayoutcome(int *data, int size){int i;for (i = 0; i<size; i++)printf("%d ", *(data + i));printf("\n");}int main(){/*时间复杂度:O(n^2)空间复杂度:O(1)思路:从第二个元素开始,不断前移。针对数据量比较小时可用。*/int data[] = { 60, 2, 97, 78, 0, 84, 68, 23, 48, 22, 63, 31, 43, 42, 82, 9,57, 21, 42, 62, 83, 98, 64, 72, 96, 31, 76, 13, 70, 49, 10, 60, 72, 36,26, 4, 56, 54, 13, 9, 98, 45, 61, 90, 88, 80, 30, 50, 77, 83, };int size = sizeof(data) / sizeof(int);insertsort(data, size);displayoutcome(data, size);getchar();return 0;}


结果:



参考网址