//注意:希尔排序是一种不稳定的排序,这表现为取不同的间隔,有可能会有不同的答案
void shell_sort(int* a, int n)
{
int interval = n;
while (interval > 1)
{
interval = interval / 3 + 1;//希尔排序的间隔有很多种取法:比如interval/=2
for (int i = interval; i < n; i++)
{
if (a[i - interval] > a[i])
{
swap(a, i - interval, i);
}
}
}
}
//该函数是用来交换元素的(即将较大的元素与较小的元素交换位置)
void swap(int* a, int max, int min)
{
int temp = a[max];
a[max] = a[min];
a[min] = temp;
}
排序——希尔排序(Shell Sort)
最新推荐文章于 2022-08-06 21:44:09 发布