您的位置:首页 > 运维架构 > Shell

C:C的排序算法:希尔排序(ShellSort)

2018-03-09 14:48 489 查看
#include<stdio.h>
typedef struct Array{
int key;
}Array;
#define LENGTH 8
void ShellSort(Array A[],int n);
int main(void) {
int arr[LENGTH] = {2,1,521,412,3,251,23,52};
int index = 1;
Array A[LENGTH+1];
while (index<=LENGTH){
A[index].key = arr[index - 1];
printf("排序前:%d \n",A[index].key);
index++;
}
index = 1;
printf("***********************\n");
ShellSort(A,LENGTH);
while (index <= LENGTH) {
printf("排序前:%d \n", A[index].key);
index++;
}
getchar();
return 0;
}
void ShellSort(Array A[], int n) {
int dk, i, j;
for (dk = n / 2; dk >= 1; dk/=2) {
for (i = dk + 1; i<=n;++i){
if (A[i].key < A[i - dk].key) {
A[0] = A[i];
for (j = i - dk; j > 0 && A[0].key < A[j].key; j -= dk) {
A[j + dk] = A[j];
}
A[j + dk] = A[0];
}
}
}

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