希尔排序

来源:互联网 发布:淘宝店卖衣服去哪进货 编辑:程序博客网 时间:2024/05/22 10:00

希尔排序又叫缩小增量排序,它通过比较相距一定间隔的元素来工作,各趟比较所用的距离(希尔增量)随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
希尔排序为不稳定的排序,其时间复杂度为O(nlogn),空间复杂度为1

void ShellSort(int A[], int size);

int main(void)
{
int A[] = {9,8,7,6,5,4,3,2,1,3};
int i,size = sizeof(A)/sizeof(int);

ShellSort(A, size);for(i = 0; i < size; i++)    printf("%d ",A[i]);printf("\n");return 0;

}

void ShellSort(int A[], int size)
{
int i, j, Increment;
int Temp;

for(Increment = size/2; Increment > 0; Increment /= 2){    for(i = Increment; i < size; i++)    {        Temp = A[i];        for(j = i; j >= Increment; j -= Increment)        {            if(Temp < A[j-Increment])                A[j] = A[j-Increment];            else                break;        }        A[j] = Temp;    }}

}

0 0
原创粉丝点击