算法基础5:希尔排序(缩减增量排序算法)
Posted xietx1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法基础5:希尔排序(缩减增量排序算法)相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 100
int readSeq(int a[]); // 读入一个整数序列,返回读入的整数的个数
void showSeq(int a[], int n);
void shellSort(int a[], int n);
int main()
int n, nums[MAXLEN];
while ((n = readSeq(nums)) > 0) // 如果输入的序列长度大于零就执行排序,否则退出
showSeq(nums, n);
shellSort(nums, n);
showSeq(nums, n);
return 0;
void shellSort(int a[], int n) // 希尔排序其实是分组的插入排序
int i, j, increment;
int key;
for (increment = n / 2; increment > 0; increment /= 2) // 缩减增量排序
for (j = increment; j < n; j++) // 内部类似插入排序
key = a[j];
i = j - increment;
while (i >= 0 && key < a[i])
a[i+increment] = a[i];
i -= increment;
a[i+increment] = key;
int readSeq(int a[])
int n, i = 0;
scanf("%d", &n);
while (i < n)
scanf("%d", &a[i++]);
return i;
void showSeq(int a[], int n)
int i = 0;
while (i < n)
printf("%d ", a[i++]);
putchar('\\n');
以上是关于算法基础5:希尔排序(缩减增量排序算法)的主要内容,如果未能解决你的问题,请参考以下文章