您的位置:首页 > 编程语言 > C语言/C++

C语言-排序-希尔排序

2015-09-14 04:00 351 查看
void shellsort1(int a[], int n)
{
int i, j, gap;

for (gap = n / 2; gap > 0; gap /= 2) //步长
for (i = 0; i < gap; i++)        //直接插入排序
{
for (j = i + gap; j < n; j += gap)
if (a[j] < a[j - gap])
{
int temp = a[j];
int k = j - gap;
while (k >= 0 && a[k] > temp)
{
a[k + gap] = a[k];
k -= gap;
}
a[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]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: