栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

希尔 排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

希尔 排序

交换法

它是插入排序的增强版

 它在排序时会对原本的数据按照 /2 进行分组,直到最后一次 /2 时为1

第一层for是将这10个数进行分组

第一次10/2分5组,0和5比较,1和6比较...

第二次5/2分2组,0和2比较,1和3比较,2和4比较....

import java.util.Arrays;

public class Test {
    public static void main(String[] args){
        int[] arr= {8,9,1,7,2,3,5,4,6,0};
        int count=0;
        for(int gap=arr.length/2; gap >= 0; gap/=2) {
        	for(int i=gap; i < arr.length; i++) {
        		for (int j =i - gap; j >=0; j-=gap) {
        			if (arr[j]>arr[j+gap]) {
						arr[j] = arr[j]^arr[j+gap];
						arr[j+gap] = arr[j]^arr[j+gap];
						arr[j] = arr[j]^arr[j+gap];
					}
        		}
        	}
        	System.out.print("第"+(++count)+"次排序:");
        	System.out.println(Arrays.toString(arr));
        }
    }
}

对交换的优化->位移法(交换法+插入法)

package com.wang;

import java.util.Arrays;

public class Test {
    public static void main(String[] args){
        int[] arr= {8,9,1,7,2,3,5,4,6,0};
        int count=0;
        for(int gap=arr.length/2; gap > 0; gap/=2) {
        	//从gap元素开始依次对其所在的组进行插入排序
        	for(int i=gap; i < arr.length; i++) {
        		int j=i;
        		int temp=arr[j];
        		//找到要插入的位置
        		if (arr[j]= 0&&temp < arr[j-gap]) {
						arr[j] = arr[j-gap];
						j-=gap;
					}
					arr[j]=temp;
				}
        	}
        	System.out.print("第"+(++count)+"次排序:");
        	System.out.println(Arrays.toString(arr));
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号