博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法门外汉理解-Shell排序
阅读量:5935 次
发布时间:2019-06-19

本文共 766 字,大约阅读时间需要 2 分钟。

#include <stdio.h>

/* 希尔排序

 

 基本思想:希尔排序又称为缩小增量排序,对简单插入排序的优化。

(外部分组gap,组内部插入排序!

 特点:一种不稳定的排序

 */

void ShellSort(int array[],int len){

    int i,j;

    int gap;// gap

    int temp;

    for (gap = len/2 ; gap >0 ; gap = gap/2){ //核心就是 array[j+gap] array[j]比較。直到gap1

        

        for (i = gap; i < len ; i++){          // i: gap ~ <len(i++)   4321...

            temp = array[i];

            for (j = i - gap; j >=0; j-=gap) {

// j: i-gap ~ >=0(j=j-gap)

                if (temp < array[j]) {

                    array[j+gap] = array[j];    // 假设待插入元素<前面序列,则后移元素

                }

                else

                    break;

            }

            array[j+gap] = temp;                // 空位填上待插入元素就可以

        }

    }

    

}

int main(int argc,constchar * argv[])

{

    int i =0;

    int a[] = {

5,4,9,8,7,6,0,1,3,2};

    int len =sizeof(a)/sizeof(a[0]);

    

    // 希尔排序

    ShellSort(a, len);

    

    for (i =0; i < len; i++) {

        printf("%d ",a[i]);

    }

    printf("\n\n");

    

    return0;

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
23种设计模式之工厂方法
查看>>
Docker
查看>>
Java笔记4:JDBC纯驱动方式连接Oracle
查看>>
java 内部类、匿名内部类、嵌套类的使用
查看>>
Scala使用Akka模拟RPC机制代码
查看>>
Linux下使用Fastboot给手机刷ROM
查看>>
怎样在tsung中使用动态參数(二)
查看>>
HDU 1272 小希的迷宫
查看>>
js之iframe子页面与父页面通信
查看>>
软件开发的基本策略
查看>>
go-008-循环语句
查看>>
JavaScript中的单例模式
查看>>
JSONP详解
查看>>
Android Camera 拍照 三星BUG总结
查看>>
gnome-tweak-tool设置gnome参数, 修改CENTOS7桌面图标大小
查看>>
开机逻辑分析
查看>>
来自Facebook的一些MySQL运维经验
查看>>
JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建
查看>>
js通用方法检測浏览器是否已安装指定插件(IE与非IE通用)
查看>>
我是这样记录javascript知识的------Day31
查看>>