希尔排序的原理:
(1)首先,从数组的首元素开始每隔“步长(间隔)”个元素就挑选一个元素出来作为子数组元素。
(2)然后每个子数组各自进行比较,比较好后,每个子数组都有顺序,进入下一轮,步长(间隔)减少,
再根据步长(间隔)分组进行比较。
(3)重复以上操作,最后就有顺序了。
#include <iostream>
#include <stdlib.h>
using namespace std;
/*******************************************/
/* 希尔排序
/******************************************/
void ShellSort(int array[], int n) //希尔排序函数
{
int i, j, step;
for (step = n / 2; step > 0; step = step / 2) //这里的step步长是根据10个元素这种情况定义的
{
for (i = 0; i < step; i++) //i是子数组的编号
{
for (j = i + step; j < n; j = j + step) //数组下标j,数组步长下标j+step
{
if (array[j] < array[j - step])
{
int temp = array[j]; //把数组下标j的值放到temp中
int k = j - step;
while (k >= 0 && temp < array[k])
{
array[k + step] = ar
574



被折叠的 条评论
为什么被折叠?



