排序算法之插入排序

来源:互联网 发布:python编译器是什么 编辑:程序博客网 时间:2024/04/30 13:48

 

插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中;第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的有序数组中......第N-1次,数组前N-1个元素组成有序的数组,将数组的第N个元素插入由N-1个元素构成的有序数组中,则完成了整个插入排序。

插入排序的步骤大概为:

⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5

 

 1 
#include<stdio.h>
int main()
{
   int array[] = {3, 7, 4 ,6, 1, 2, 5}; int count = 0; count = sizeof(array) / sizeof(array[0]); for (int i = 1; i < count; i++) { int j = i; int temp = array[i]; while (j > 0 && temp < array[j - 1]) { array[j] = array[j - 1]; j--; } array[j] = temp; } for (int i = 0; i < count; i++) { printf("%d\n", array[i]); }
   return 0;
}

 

插入排序是稳定的排序算法,

平均时间复杂度:O(n^2)

空间复杂度:O(1)  (用于记录需要插入的数据)

0 0
原创粉丝点击