您的位置:首页 > 其它

希尔排序

2012-08-07 22:03 162 查看
【代码】

#include <stdio.h>
#include <stdlib.h>
#include "time.h"

#define N 20

void Init(int *arr);
void Output(int *arr);
int Compare(int x, int y);
void ShellSort(int * arr);
void ShellInsert(int * arr, int dk);

int main()
{
int arr[N+1];
Init(arr);
Output(arr);
ShellSort(arr);
Output(arr);
return 0;
}

//初始化
void Init(int *arr)
{
int i;
srand( (unsigned)time( NULL ) );
for(i = 1; i <= N; i++)
arr[i] = rand()%100;
}

//输出
void Output(int *arr)
{
int i;
for(i = 1; i <= N; i++)
printf("%2d ", arr[i]);
printf("\n");
}

//比较函数
int Compare(int x, int y)
{
return x < y;
}

//希尔排序
void ShellSort(int * arr)
{
int i, dlta[] = {10, 5, 3, 1};
for(i = 0; i < 4; i++)
ShellInsert(arr, dlta[i]);
}

void ShellInsert(int * arr, int dk)
{
int i, j;
for(i = dk+1; i <= N; i ++)
{
arr[0] = arr[i];
for(j = i-dk; Compare(arr[0], arr[j]); j -= dk)
arr[j+dk] = arr[j];
arr[j+dk] = arr[0];
}
}


【运行截图】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: