希尔排序+移位法(吊打交换法)

package com.atguigu.sort;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;/*** @创建人 wdl* @创建时间 2021/3/22* @描述*/
public class ShellSort {public static void main(String[] args) {
//        int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0};//创建一个80000个的随机数组int[] arr = new int[80000];for (int i = 0; i < 80000; i++) {arr[i] = (int) (Math.random() * 8000000);//生成一个[0,8000000)数}Date data1 = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");String data1str = simpleDateFormat.format(data1);System.out.println("排序前的时间是=" + data1str);shellSort2(arr);Date data2 = new Date();String data2str = simpleDateFormat.format(data2);System.out.println("排序后的时间是=" + data2str);}//使用逐步推导的方式来编写希尔排序public static void shellSort(int[] arr) {//根据前面的逐步分析,使用循环处理int temp = 0;int count = 0;for (int gap = arr.length / 2; gap > 0; gap /= 2) {for (int i = gap; i < arr.length; i++) {//遍历各组中所有的元素(共5组,每组有2个元素),步长5for (int j = i - gap; j >= 0; j -= gap) {//如果当前元素大于加上步长后的元素,说明需要交换if (arr[j] > arr[j + gap]) {temp = arr[j];arr[j] = arr[j + gap];arr[j + gap] = temp;}}}
//            System.out.println("希尔排序"+(++count)+"轮后=" + Arrays.toString(arr));}//
//        int temp = 0;
//        //希尔排序的第1轮排序
//        //因为第一轮排序,是将10个数据分成了5组
//        for (int i = 5; i < arr.length; i++) {
//            //遍历各组中所有的元素(共5组,每组有2个元素),步长5
//            for (int j = i - 5; j >= 0; j -= 5) {
//                //如果当前元素大于加上步长后的元素,说明需要交换
//                if (arr[j] > arr[j + 5]) {
//                    temp = arr[j];
//                    arr[j] = arr[j + 5];
//                    arr[j + 5] = temp;
//                }
//
//
//            }
//        }
//        System.out.println("希尔排序1轮后=" + Arrays.toString(arr));//[3, 5, 1, 6, 0, 8, 9, 4, 7, 2]
//
//
//        //希尔排序的第2轮排序
//        //因为第二轮排序,是将10个数据分成了5/2组
//        for (int i = 2; i < arr.length; i++) {
//            //遍历各组中所有的元素(共5组,每组有2个元素),步长5
//            for (int j = i - 2; j >= 0; j -= 2) {
//                //如果当前元素大于加上步长后的元素,说明需要交换
//                if (arr[j] > arr[j + 2]) {
//                    temp = arr[j];
//                    arr[j] = arr[j + 2];
//                    arr[j + 2] = temp;
//                }
//
//
//            }
//        }
//        System.out.println("希尔排序2轮后=" + Arrays.toString(arr));//[0, 2, 1, 4, 3, 5, 7, 6, 9, 8]
//
//
//        //希尔排序的第3轮排序
//        //因为第二轮排序,是将10个数据分成了2/2组
//        for (int i = 1; i < arr.length; i++) {
//            //遍历各组中所有的元素(共5组,每组有2个元素),步长5
//            for (int j = i - 1; j >= 0; j -= 1) {
//                //如果当前元素大于加上步长后的元素,说明需要交换
//                if (arr[j] > arr[j + 1]) {
//                    temp = arr[j];
//                    arr[j] = arr[j + 1];
//                    arr[j + 1] = temp;
//                }
//
//
//            }
//        }
//        System.out.println("希尔排序3轮后=" + Arrays.toString(arr));}//对交换式的希尔排序进行优化->移位法public static void shellSort2(int[] arr){//增量gap,并逐步的缩小增量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]<arr[j-gap]){while (j-gap>=0&&temp<arr[j-gap]){//移动arr[j]=arr[j-gap];j=j-gap;}//当退出while后,就给temp找到了插入的位置arr[j]=temp;}}}}}

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

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

相关文章

那些年的骗子

中午一觉睡醒之后&#xff0c;忽然发现多年不联系的初中同学给我发了个消息&#xff0c;觉得事情没那么简单&#xff1a;正好我的公众号需要大量的用户&#xff0c;我就顺水推舟了&#xff01;一看到QQ的安全提示&#xff0c;我就感觉事情确实不妙&#xff01;初步推断对方是个…

干货 | 彻底弄懂 HTTP 缓存机制及原理

转载自 干货 | 彻底弄懂 HTTP 缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段&#xff0c;对于从事 Web 开发的同学们来说&#xff0c;应该是知识体系库中的一个基础环节&#xff0c;同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多…

实习知识整理7:SpringBoot和html+thymeleaf模板的项目的相关配置文件

1. application.yml server: port: 8082servlet:context-path: /project #设置访问地址 http://localhost:8082/project 才可以访问到 static 下 index.htmlspring:datasource: # 数据库driver-class-name: com.mysql.cj.jdbc.Driver # 这是8的配置&#xff0c;5的话不用…

Visual Basic的未来之路

上周&#xff0c;微软宣布了他们改变Visual Basic语言未来发展计划的想法。这次公布给Visual Basic开发人员留下了很多不确定性&#xff0c;但Visual Basic语言的设计者Anthony D.Green说明了这个新策略的一些细节。 Green首先列出了当时使用VB进行开发的四个基础指导原则&…

快速排序+思路分析

图解 代码实现 package com.atguigu.sort;import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class QuickSort {public static void main(String[] args) {//[-9,78,…

jquery sleep函数

function sleep(n) { //n表示的毫秒数 var start new Date().getTime(); while (true) if (new Date().getTime() - start > n) break; } console.log(new Date()); this.sleep(3000); console.log(new Date());

2017 年编程语言排行榜:Python 排第一

站长之家(ChinaZ.com) 7 月 24 日消息&#xff0c;近日根据 IEEE Spectrum 发布的研究报告显示&#xff0c;在 2016 年排名第三的 Python 在今年已经成为世界上最受欢迎的语言&#xff0c;C 和 Java 分别位居第二和第三位。IEEE Spectrum 的排行依据数据记者 Nick Diakopoulos …

Spring 获取 request 的几种方法及其线程安全性分析

转载自 Spring 获取 request 的几种方法及其线程安全性分析 本文将介绍在Spring MVC开发的Web系统中&#xff0c;获取request对象的几种方法&#xff0c;并讨论其线程安全性。 一、概述 在使用Spring MVC开发Web系统时&#xff0c;经常需要在处理请求时使用request对象&…

2的负x次幂图像_数学| NO.2,3 函数 T15

点击蓝字&#xff0c;关注我们函数题目2020.11.30#2,3函数 T15函数发展&#xff1a;函数就是在某变化过程中有两个变量X和Y&#xff0c;变量Y随着变量X一起变化&#xff0c;而且依赖于X。如果变量X取某个特定的值&#xff0c;Y依确定的关系取相应的值&#xff0c;那么称Y是X的函…

AspNet Identity 和 Owin 谁是谁

英文原文:http://tech.trailmax.info/2014/08/aspnet-identity-and-owin-who-is-who/ 最近我发现Stackoverflow上有一个非常好的问题.提问者问:为什么在调用AuthenticationManager.SignIn后,claim仍然可以被添加到Identity并持久化到cookie里. 示例代码如下所示: ClaimsIdenti…

jquery中获取下拉框的文本值

获取下拉框的属性值&#xff1a;$(this).val(); 获取下拉框的文本值&#xff1a;$(this).find(option:selected).text();

快速排序+时间测试(yyds)

package com.atguigu.sort;import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher;import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class QuickSort {public…

ssh根据姓名查询的时候报错java.lang.IndexOutOfBoundsException: Remember that

错误如下&#xff1a;java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:79)at org.hibernate.engine.query.ParameterMetadata.ge…

bs架构 erp 进销存_从应用架构看生鲜电商信息化建设

编辑导读&#xff1a;对于生鲜电商来说&#xff0c;信息化建设是很重要的一环&#xff0c;所有的业务开展都离不开信息化的支持。本文作者讲从应用架构角度出发&#xff0c;对生鲜电商信息化建设展开分析&#xff0c;希望对你有帮助。一、背景语言共识之前介绍了从业务架构看生…

java中int转成String位数不足前面补零 java格式化2位数不足补零

最近我又搜了关于String.format的东西&#xff0c;其实有自带的补零方法&#xff0c; String.format("%06d",12);//其中0表示补零而不是补空格&#xff0c;6表示至少6位

分布式 | Dubbo 架构设计详解

转载自 分布式 | Dubbo 架构设计详解 Dubbo是Alibaba开源的分布式服务框架&#xff0c;它最大的特点是按照分层的方式来架构&#xff0c;使用这种方式可以使各个层之间解耦合&#xff08;或者最大限度地松耦合&#xff09;。从服务模型的角度来看&#xff0c;Dubbo采用的是一…

完成OSS.Http底层HttpClient重构封装 支持标准库

OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕&#xff0c;OSS开源系列两个最底层的类库已经具备跨运行时支持的能力。由于OSS.Http类库是几年前我参照RestSharp的思路&#xff0c;完成的一个轻量型Http请求框架。由于时间较久底层使用的还是HttpWebRequest&#xff…

归并排序+思路分析

思路分析 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class MergeSort {public static void main(String[] args) {int arr[]{8,4,5,7,1,3,6,2};int temp[]new int[arr.length];mergeSort(arr,0,arr.len…

java中判断 101-200 之间有多少个素数,并输出所有的素数

题目&#xff1a;判断 101-200 之间有多少个素数&#xff0c;并输出所有的素数 素数是什么&#xff1a; 质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则称为合数。 那么题目的答案如下&#xff…

常数除以0的极限是什么_【极限】第四节 极限运算法则

定理 例题 极限运算法则就像加减乘除四则运算一样&#xff0c;是一种计算规则&#xff0c;那么极限也有属于它自己的一套计算规则。 极限运算法则的常用定理 定理1 两个无穷小的和是无穷小 有限个无穷小之和也是无穷小 定理2 有界函数与无穷小的乘积是无穷小 常数与无穷小的乘积…