From eb439685ca391b3975a036ac90fb01059a32e577 Mon Sep 17 00:00:00 2001 From: pc6teg8jp <2519714429@qq.com> Date: Sat, 19 Feb 2022 21:35:14 +0800 Subject: [PATCH] =?UTF-8?q?Add=20=E5=B8=8C=E5=B0=94=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 希尔排序 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 希尔排序 diff --git a/希尔排序 b/希尔排序 new file mode 100644 index 0000000..1c38eef --- /dev/null +++ b/希尔排序 @@ -0,0 +1,30 @@ +/*原理:希尔排序本质是对插入排序的改进做法,提高效率,先将待排序列进行预排序使之接近 +有序 ,再进行最后排序*/ +/*时间复杂度最优:O(N^1.3),最差:O(N^1.3); +空间复杂度:O(1)*/ +/*它的代码量小,不需要使用额外的内存,而且对于中等大小的数组它的运行时间是可以接受的。 +如果你需要解决一个排序问题而又没有系统的排序函数可用,可以先用希尔排序*/ +#include +#include + +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; +}