算法之排序算法-shell排序(移位法)

个人觉得移位法就是借希尔排序进行分组,插入排序进行排序

注释是上一篇的交换法.

而且这种移位排序的真的很快

package com.ebiz.sort;import java.text.SimpleDateFormat;
import java.util.Date;/*** @author YHj* @create 2019-07-30 8:53* shell排序-交换法*/
public class Shell{public static void main(String[] args) {int[] arr = new int[80000];for (int i = 0; i < 80000; i++) {arr[i] = (int) (Math.random() * 800000);}String s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());System.out.println("排序前 = " + s);getResult(arr);String l = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());System.out.println("排序后 = " + l);//System.out.println(Arrays.toString(arr));//第二次分组 5/2=2 2组,每组两个数的间隔步长为2,//一组5个数,外层循环,一组比较4次,一共8次
//        for (int i = 2; i < arr.length; i++) {
//            //确立要比较的步长的数
//            for (int j = i-2; j >=0 ; j-=2) {
//                if (arr[j]>arr[j+2]){
//                    int temp=arr[j+2];
//                    arr[j+2]=arr[j];
//                    arr[j]=temp;
//                }
//            }
//
//        }
//        System.out.println(Arrays.toString(arr));//第3次分组 2/2=1 1组,,每组两个数的间隔步长为1,//一组10个数,外层循环,一组比较9次,一共9次
//        for (int i = 1; i < arr.length; i++) {
//            //确立要比较的步长的数
//            for (int j = i-1; j >=0 ; j-=1) {
//                if (arr[j]>arr[j+1]){
//                    int temp=arr[j+1];
//                    arr[j+1]=arr[j];
//                    arr[j]=temp;
//                }
//            }
//
//        }//System.out.println(Arrays.toString(arr));
}public static void getResult(int[] arr) {
//        //第一次分组 10/2=5 5组,每组两个数的间隔步长为5,
//        // 一组两个数,外层循环 一组比较1次,一共5次
//        for (int i = 5; i < arr.length; i++) {
//            //确立要比较的步长的数
//            for (int j = i-5; j >=0 ; j-=5) {
//                if (arr[j]>arr[j+5]){
//                    int temp=arr[j+5];
//                    arr[j+5]=arr[j];
//                    arr[j]=temp;
//                }
//            }
//
//        }//控制分的组数
//        for (int i = arr.length/2; i >=1 ; i/=2) {
//            //控制每组比较的次数
//            for (int j = i; j < arr.length; j++) {
//                //每组进行比较并进行交换
//                for (int k= j-i; k >=0 ; k-=i) {
//                    if (arr[k]>arr[k+i]){
//                        int temp=arr[k+i];
//                        arr[k+i]=arr[k];
//                        arr[k]=temp;
//                    }
//                }
//
//            }
//
//
//        }//shell排序-移位法,即插入排序//控制分组for (int gap = arr.length/2; gap >0 ; gap/=2) {//所有组进行排序for (int i=gap; i<arr.length;i++){//待排序的数int j=i;int temp=arr[j];//进行比较while (j-gap >= 0 && temp <arr[j-gap]){arr[j]=arr[j-gap];j-=gap;}arr[j]=temp;}}}}

 

转载于:https://www.cnblogs.com/jiushixihuandaqingtian/p/11313073.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 页面布局时你使用最多的标签是什么?div吗?在什么情况下会使用到div?

[html] 页面布局时你使用最多的标签是什么&#xff1f;div吗&#xff1f;在什么情况下会使用到div&#xff1f; 页面的的整体布局使用<header> <main> <aside> <footer> 等。 一些细分的布局使用<div>&#xff0c;并指定适当的class、role和ari…

Effulgent的《深入理解Direct3D9》整理版(转)

深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大&#xff0c;我把以前的一些学习笔记都汇总起来&#xff0c;希望对朋友们有些所帮助&#xff0c;因为是零散笔记&#xff0c;思路很杂&#xff0c;还请包涵。 其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DE…

我的世界光影mod怎么用_玩转光影!闪光灯、反光板怎么用才高级?

光线对于拍摄的重要性不言而喻&#xff0c;有人甚至说&#xff1a;掌握了光线&#xff0c;你就掌握了摄影。今天我们就来谈谈摄影中和“光”关系最密切的两个器材&#xff1a;闪光灯、反光板。闪光灯的种类之前也跟大家介绍过闪光灯的种类&#xff0c;如果只说较为常用的&#…

https证书pfx 生成 pem,crt,key

(1)将.pfx格式的证书转换为.pem文件格式:openssl pkcs12 -in xxx.pfx -nodes -out server.pem(2)从.pem文件中导出私钥server.key&#xff1a;openssl rsa -in server.pem -out server.key(3)从.pem文件中导出证书server.crt openssl x509 -in server.pem -out server.crt转载…

sklearn所需要的知识点

NumPy NumPy&#xff08;Numerical Python的简称&#xff09;是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵&#xff0c;比Python自身的嵌套列表&#xff08;nested list structure&#xff09;结构要高效的多&#xff08;该结构也可以用来表示矩阵&am…

[html] 如何在网页中嵌入公司地址的地图?

[html] 如何在网页中嵌入公司地址的地图&#xff1f; <script srchttp://api.map.baidu.com/api?v2.0&akBG9Wtw7egUbIQHPjG9ayOLQO> </script> <script> (function(){ var map new BMap.Map("container"); //设置底图 map.centerAndZoom(&q…

sql游标以及异常处理

DECLARE emsgoutid UNIQUEIDENTIFIER ;DECLARE sendtime VARCHAR(20) ;DECLARE temptime DATETIME ;DECLARE sms_cursor CURSOR FORSELECT emsgoutid FROM dbo.emsg_out-- 打开游标OPEN sms_cursorFETCH NEXT FROM sms_cursorINTO emsgoutidWHILE FETCH_STATUS 0 BEGIN--tryBE…

正弦定理和余弦定理_那些让你加快解题速度的高中数学公式-26 利用三正弦、三余弦定理快速解题...

作者&#xff1a;本质教育 韦卓甫简单的题目做得又快又对对于任何考试&#xff08;例如高考&#xff09;&#xff0c;本质教育有一条重要的原则&#xff1a;那些考试拿高分的&#xff0c;一定是简单的题目做得又快又对&#xff0c;这样他们才有时间去思考难题。因此&#xff0c…

[html] 如何扩大CheckBox点击区域

[html] 如何扩大CheckBox点击区域 用 label 包裹&#xff0c;扩大 label 尺寸个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Centos7静态ip设置(亲测有效)

本文引自&#xff1a;https://www.cnblogs.com/toov5/p/10340395.html&#xff0c;特此鸣谢 最近想测试消息中间件等各类web集群相关技术&#xff0c;这就需要解决linux主机之间互联互通的若干问题&#xff0c;特此折腾 友情提示&#xff1a;在ubuntu19上用vmware15 搭建centos…

C++之整理一些最近看书的收获

1 short 只能修饰 int 。 2 long 只能修饰 int 和 double &#xff08;以及 long &#xff0c;比如 long long a ; 是 long long int a; 的简写&#xff09; 。 3 char 和 int 型数可以分别用 unsigned 和 signed 来修饰&#xff0c;表示带符号和不带符号。 4 实型数&#…

[html] DOM节点的种类有哪些?

[html] DOM节点的种类有哪些&#xff1f; 可以用node.nodeType来获取节点类型返回的是一个数字&#xff0c;1是元素节点&#xff0c;如div&#xff0c;3是文本节点&#xff0c;如div标签中的文字&#xff0c;8是注释节点&#xff0c;9是document节点&#xff0c;11是 Document…

python语句中对象未被定义_python 形参没有被定义???感觉遇到鬼了。。。

按照顺序&#xff0c;给没有key的参数赋值&#xff0c;意味着传递参数时&#xff0c;需按顺序匹配的参数必须出现在按key匹配的参数之前&#xff1b;给按照key匹配的参数赋值&#xff1b;将多余的按照顺序匹配但未匹配的参数值归入*name的tuple中&#xff1b;将多余未匹配上的按…

Silverlight 写了一个2D仿3D的柱状图表

技术上主要用了上一篇博客里关于自定义控件的绑定解决方案&#xff0c;然后就是在blend里做一些简单的颜色动画的调整。 先传个效果出来&#xff1a; 转载于:https://www.cnblogs.com/v-jing/archive/2011/12/01/2270918.html

认识Web.config文件

Web.config文件是一个XML文本文件&#xff0c;它用来储存 ASP.NET Web 应用程序的配置信息&#xff08;如最常用的设置ASP.NET Web 应用程序的身份验证方式&#xff09;&#xff0c;它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后&#xff0c;默认情…

labview在2048中添加时间滚动条_Chrome优化深色模式:滚动条颜色也能跟随变化 使上网更具沉浸感...

为了让谷歌浏览器的深色模式(Dark Mode)变得更加一致&#xff0c;谷歌在 Chrome 的滚动条中添加了对深色模式的支持。虽然我们很多人在上网过程中可能不太关注滚动条&#xff0c;但这毕竟是个可喜的变化&#xff0c;从而让 Chrome 的深色模式更具沉浸感。滚动条并不跟随网页浏览…

linux环境安装tomcat8,启动时,报not touch:/user/tomcat/tomcat8/logs/catalina.out:not a file or directory...

问题原因&#xff1a;我的jdk和tomcat都放在root目录下新建的user目录中&#xff0c;但是在配置JAVA_HOME时&#xff0c;路径没有配对。配置如下&#xff1a; export JAVA_HOME/user/jdk/jdk1.7.0_80 export JRE_HOME/user/jdk/jdk1.7.0_80/jre export CLASSPATH.:$JAVA_HOME/l…

中国软件20年,向金山和中国软件英雄致敬!

原文题目&#xff1a;中国软件20年&#xff0c;向金山和不能忘却的中国软件英雄致敬&#xff01; 12日&#xff0c;“中国软件20年&#xff0c;知识英雄再聚首”高峰论坛于在北京召开。此次活动原本是由金山软件发起组织&#xff0c;是金山20周年庆典活动的重要组成部分。但是活…

python prettytable_让python的print变得更好看——prettytable和colorama

【小宅按】python在输出信息的时候&#xff0c;通常会使用print&#xff0c;有没有方法可以美化一下输出的格式呢&#xff1f;这里介绍两个包&#xff1a;prettytablecolorama这两个包都不是Python的标准库&#xff0c;因此在使用之前&#xff0c;需要安装它们。pip install pr…

[html] 你有使用过output标签吗?说说它的用途有哪些?

[html] 你有使用过output标签吗&#xff1f;说说它的用途有哪些&#xff1f; 执行计算然后在 元素中显示结果个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题