#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];
}
}
}
}
C:C的排序算法:希尔排序(ShellSort)
最新推荐文章于 2022-08-25 17:08:22 发布