排序(之希尔排序)

来源:互联网 发布:淘宝不能开店了 编辑:程序博客网 时间:2024/05/01 22:33

希尔排序是不稳定排序,平均算法复杂度和最坏算法复杂度为:O(nlgn),最好的情况为O(n);空间复杂度为O(1);

希尔排序是插入排序的一种,且希尔排序的算法复杂度大大低于插入排序,只是由稳定变为不稳定的排序。

#include<stdio.h>void Shell_Insert(int a[],int d,int n){int i,j,rc;for(i=d;i<n;i++){if(a[i]<a[i-d]){rc=a[i];j=i;while(j-d>=0 && rc<a[j-d]){a[j]=a[j-d];j-=d;}a[j]=rc;}}}void ShellSort(int a[],int n){int increment=n;//增量do{increment=increment/3+1;Shell_Insert(a,increment,n);}while(increment>1);}void main(){int a[]={49,38,65,97,76,13,27,49,55,04};int n=sizeof(a)/sizeof(a[0]);ShellSort(a,n);for(int i=0;i<n;i++){printf("%d\n",a[i]);}}