#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#define MAXSIZE 100
typedef int T;
typedef struct list {
int size;
T elements[MAXSIZE];
}List;
void InsSort(List* lst, int h, int offset) {
int i, j; T x;
for ( i = offset+h ; i < lst->size ; i+=h)
{
x = lst->elements[i];
for ( j= i-h; j >=0&& x< lst->elements[j] ; j-=h)
{
lst->elements[j + h] = lst->elements[j];
}
lst->elements[j + h] = x;
}
}
void ShellSort(List* lst) {
int i, incr = lst->size;
do {
incr = incr / 3 + 1;
for (i = 0; i < incr; i++)
{
InsSort(lst, incr, i);
}
} while (incr > 1);
}
void main() {
int i;
List* lst = (List*)malloc(sizeof(List));
lst->size = 9;
//lst->elements
lst->elements[0] = 9;
lst->elements[1] = 8;
lst->elements[2] = 7;
lst->elements[3] = 6;
lst->elements[4] = 5;
lst->elements[5] = 4;
lst->elements[6] = 3;
lst->elements[7] = 2;
lst->elements[8] = 1;
ShellSort(lst);
//memcpy(lst->elements, temp, 10);
for (i = 0; i < 9; i++)
{
printf("%d \n", lst->elements[i]);
}
}
04-19
4053
07-11
580
08-17
06-26
2857
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交