Add 希尔排序

希尔排序·
pc6teg8jp 4 years ago
parent 55913fb357
commit eb439685ca

@ -0,0 +1,30 @@
/*原理:希尔排序本质是对插入排序的改进做法,提高效率,先将待排序列进行预排序使之接近
有序 ,再进行最后排序*/
/*时间复杂度最优O(N^1.3),最差:O(N^1.3);
空间复杂度O(1)*/
/*它的代码量小,不需要使用额外的内存,而且对于中等大小的数组它的运行时间是可以接受的。
如果你需要解决一个排序问题而又没有系统的排序函数可用,可以先用希尔排序*/
#include <stdio.h>
#include <malloc.h>
void shellSort(int *a, int len); // 函数声明
int main(void)
{
int i, len, * a;
printf("请输入要排的数的个数:");
scanf("%d",&len);
a = (int *)malloc(len * sizeof(int)); // 动态定义数组
printf("请输入要排的数:\n");
for (i = 0; i < len; i++) { // 数组值的输入
scanf("%d",&a[i]);
}
shellSort(a, len); // 调用希尔排序函数
printf("希尔升序排列后结果为:\n");
for (i = 0; i < len; i++) { // 排序后的结果的输出
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
Loading…
Cancel
Save