希尔排序

来源:互联网 发布:苹果mac有什么用 编辑:程序博客网 时间:2024/06/15 02:29
void shell_sort(vector<int>&array, int n){    if (array.empty())    {        return;    }    int j, gap;    for (gap = n / 2; gap > 0;gap/=2)    {        for (j = gap; j < n;j++)        {            if (array[j]<array[j-gap])            {                int temp = array[j];                int k = j - gap;                while (k>=0&&array[k]>temp)                {                    array[k + gap] = array[k];                    k -= gap;                }                array[k + gap] = temp;            }        }    }}另一种方法:void shellsort3(int a[], int n){    int i, j, gap;    for (gap = n / 2; gap > 0; gap /= 2)        for (i = gap; i < n; i++)            for (j = i - gap; j >= 0 && a[j] > a[j + gap]; j -= gap)                swap(a[j], a[j + gap]);}

0 0