C语言版-希尔排序算法
Posted Dog软件工程师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言版-希尔排序算法相关的知识,希望对你有一定的参考价值。
//打印
void Print(int *array,int size);
//希尔排序
void ShellSort(int *array, int size);
//打印
void Print(int *array, int size)
{
int i = 0;
for (i = 0; i < size; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
//希尔排序
void ShellSort(int *array, int size)
{
int gap = 3;
int i = 0;
//记录排序次数
int j = 1;
//要插入的位置的前一个位置
int pos = 0;
int k = 0;
while (gap)
{
for (i = 0; i < size; i++)
{
//记录要存入的元素
k = array[i + gap];
//下标超过数组的范围返回
if (i + gap >= size)
{
break;
}
//从被插入的元素的前gap个元素开始比较
//pos = i + gap -gap
pos = i;
while (k < array[pos] && pos>=0)
{
//元素后移
array[pos + gap] = array[pos];
//下标
pos = pos - gap;
}
array[pos + gap] = k;
}
printf("第%d次排序后:",j++);
Print(array, size);
gap--;
}
}
以上是关于C语言版-希尔排序算法的主要内容,如果未能解决你的问题,请参考以下文章
希尔排序ShellSort算法详解Java/Go/Python/JS/C不同语言实现