插入排序

来源:互联网 发布:禁止吸烟网络图片大全 编辑:程序博客网 时间:2024/05/29 15:32
减治法思想,通过对较小已排序数组的扩充,得到整体有序。对于少量元素的排序,它是一个有效的算法。算法保证在对第j个元素进行排序时,前面的[0,...,j-1]已有序。

效率:
在最好情况下,待排序数组已有序,此时算法属于O(N)。
在最坏情况下,待排序数组已反向排序,此时算法属于O(N^2),此时和比较排序的效率相同。
如果输入基本有序,则该算法运行很快,这使它优于一些基本排序,例如:选择排序和冒泡排序。

代码:
#include <stdio.h>void InserSort(int *array, unsigned int n){int i, j;int temp;/* 排列n个数要进行n-1趟比较 */for (i = 1; i < n; i++){temp = array[i];for (j = i-1; j >= 0 && array[j] > temp; j--)array[j+1] = array[j];array[j+1] = temp;}}int main(void){int i;int array[] = {34, 8, 64, 51, 32, 21};int len = sizeof(array)/sizeof(array[0]); /* 整形数组大小计算方法 */InserSort(array, len);for (i = 0; i < len; i++)printf("%d ", array[i]);printf("\n");return 0;}


参考:
《算法导论》 P9-P16.

0 0
原创粉丝点击