• 希尔排序


    希尔排序

    基本思想:分组的直接插入排序,是不稳定排序算法
    描述:

    1. 将一个数据序列分成若干组,每组由若干相隔一段距离的元素组成,这段距离称为增量,在一个组内采用直接插入排序算法进行排序;
    2. 增量的初值一般为数据序列长度的一半,以后每趟增量逐渐减小,最后为1,当增量为1时,只有一组,元素是整个序列,在进行一趟直接插入排序即可。

    代码

    	public static void shellSort(int[] table) {
    		for(int delta=table.length/2;delta>0;delta/=2){//控制增量减半
    			for(int i =delta;i<table.length;i++){//
    				int temp = table[i],j;
    				for(j =i- delta;j>=0&&temp<table[j];j-=delta){
    					table[j+delta] = table[j];
    				}
    				table[j+delta] = temp;
    			}
    			for(int k=0;k<table.length;k++){
    				System.out.print(table[k]+ " ");
    			}
    			System.out.println("");
    		}
    	}
    

    三层循环

    1. 最外层:以增量delta变化来控制进行若干趟扫描,delta的初值为序列长度的一半,以后逐渐减半,直至为1
    2. 中间循环:进行一趟扫描,序列分为delta组,每组元素进行直接插入排序
    3. 最内层循环:每组元素相距delta远,寻找插入位置

    时间复杂度:平均:o(nlogn)~o(n^2)
    最好:o(n1.3),最坏:o(n2)
    空间复杂度:o(1)

    作者:starryfeiii
    出处:http://www.cnblogs.com/feiii/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    dcokee 安装 nginx
    docker 私有仓库
    docker下的images 保存和导出
    mybatis-puls 字段为null时候的更新问题
    MyBatis-Plus的一些问题
    60万数据的表添加索引查询的速度
    Velocity 模板引擎的应用
    什么是javabean及其用法
    java中this和super关键字的使用
    Windows-AutoHotkey-常用代码保存
  • 原文地址:https://www.cnblogs.com/feiii/p/6424520.html
Copyright © 2020-2023  润新知