归并排序+时间测试

package com.atguigu.sort;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;/*** @创建人 wdl* @创建时间 2021/3/22* @描述*/
public class MergeSort {public static void main(String[] args) {
//        int arr[]={8,4,5,7,1,3,6,2};//        System.out.println("归并排序后="+ Arrays.toString(arr));//创建一个80000个的随机数组int[] arr = new int[80000];int temp[]=new int[arr.length];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);mergeSort(arr,0,arr.length-1,temp);Date data2 = new Date();String data2str = simpleDateFormat.format(data2);System.out.println("排序后的时间是=" + data2str);}//    分+和的方法public static void mergeSort(int[] arr,int left,int right,int[] temp){if(left<right){int mid=(left+right)/2;//中间索引//向左递归进行分解mergeSort(arr,left,mid,temp);//向右递归进行分解mergeSort(arr,mid+1,right,temp);//到合并merge(arr,left,mid,right,temp);}}//合并方法/**** @param arr 排序的原始数组* @param left 左边有序序列的初始序列* @param mid 中间索引* @param right 右边索引* @param temp 做中转的数组*/public static void merge(int[] arr,int left,int mid,int right,int[] temp){
//        System.out.println("***");int i=left;//初始化i,左边有序序列的初始索引int j=mid+1;//初始化j,右边有序序列的初始索引int t=0;//指向temp数组的当前索引//(一)//先把左右两边(有序)的数据按照规则填充到temp数组//直到左右两边的有序序列,有一边处理完毕为止while(i<=mid&&j<=right){//继续//如果左边的有序序列的当前元素,小于等于右边有序序列的当前元素//即将左边的当前元素,填充到temp数组//然后t++,i++if(arr[i]<=arr[j]){temp[t]=arr[i];t++;i++;}else {//反之,将右边有序序列的当前元素,填充到temp数组temp[t]=arr[j];t++;j++;}}//(二)//把有剩余数据的一遍的数据一次全部填充到tempwhile(i<=mid){//左边的有序序列还有剩余的元素,就全部填充到temptemp[t]=arr[i];t++;i++;}while(j<=right){//右边的有序序列还有剩余的元素,就全部填充到temptemp[t]=arr[j];t++;j++;}//(三)//将temp数组的元素拷贝到arr//注意,并不是每次都拷贝所有t=0;int tempLeft=left;////第一次合并tempLeft=0,right=1//tempLeft=2,right=3//tl=0,ti=3//最后一次tempLeft=0 right=7
//        System.out.println("tempLeft="+tempLeft+"right="+right);while (tempLeft<=right){arr[tempLeft]=temp[t];t++;tempLeft++;}}}

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

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

相关文章

Visual Studio 2017将于3月7日发布

继最近一连串候选发布版本之后&#xff0c;微软已经开始针对正式发布Visual Studio 2017做最后准备工作。微软已经宣布2017年3月7日会是VS2017官方发布时间。第一款VS软件问世于1997年&#xff0c;本次发布标志着产品20周年&#xff0c;这些年里包括了Visual J、Visual FoxPro、…

java中求5的阶乘

题目如上所示&#xff1a;java中求5的阶乘是多少&#xff1f; 什么事阶乘呢&#xff1f; 答&#xff1a;阶乘是基斯顿卡曼&#xff08;Christian Kramp&#xff0c;1760&#xff5e;1826&#xff09;于 1808 年发明的运算符号&#xff0c;是数学术语。 一个正整数的阶乘&#x…

java中判断数组中元素出现的次数

如题所示&#xff1a;有 20 个 0-9 之间的数字&#xff0c;并统计 0-9 这 10 个数字分别出现了多少次&#xff1f; 解答思路&#xff1a;声明两个数组&#xff0c;一个是需要判断元素出现次数的数组&#xff0c;另一个就是存放元素个数的数组&#xff0c;分别如下&#xff1a;…

SQL Server 急救包(First Responder Kit)入门教程

如果你的SQL Server数据库运行起来十分缓慢甚至逐渐停止了&#xff0c;恰巧又赶上了你的数据库管理员在休假&#xff0c;你又不知道该如何是好&#xff0c;那么这篇文章会帮助你从学习使用SQL Server急救包&#xff08;SQL Server First Responder Kit&#xff09;开始解决问题…

mybatis的$和#详解分析

MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用 MyBatis中#{}和${}的作用与区别 MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用 在mybatis中#和$的主要区别是&#xff1a;#传入的参数在SQL中显示为字符串&#xff0c;#方…

IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法

转载自 IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法 最近在测试兼容性问题的时候发现&#xff0c;使用Ajax的GET请求向后台获取响应结果时&#xff0c;如果是IE8浏览器&#xff0c;第一次发送请求时会得到正常的返回结果&#xff0c;然后当再去发送相同请求访…

springboot获取多个请求参数_springboot获取URL请求参数的多种方式

1、直接把表单的参数写在Controller相应的方法的形参中&#xff0c;适用于get方式提交&#xff0c;不适用于post方式提交。/*** 1.直接把表单的参数写在Controller相应的方法的形参中* param username* param password* return*/RequestMapping("/addUser1")public S…

Mysql常用语法总结

Mysql常用语法总结如下&#xff1a; #连接mysql数据库(Dos下面) mysql -u root -p 123 #创建数据库 create database myschool; #创建表 drop table student create table student ( id int comment 编号, name CHAR(10) comment 姓名 )charset utf8drop table if exis…

基数排序+推导过程

图解 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class RadixSort {public static void main(String[] args) {//53, 3, 542, 748, 14, 214int arr[] {53, 3, 542, 748, 14, 214};radixSort(arr);}//基…

Xamarin的坑 - 绑定(一) - 拿微信iOS SDK 简单说起

编者语&#xff1a;Xamarin 并入微软快一年了&#xff0c;在国内推广还是慢&#xff0c;主要有两个方面&#xff0c;Xamarin在国内的本地化不足真正在国内的解决方案基本上没有&#xff0c;第二就是和本土的一些主要SDK接入案例基本上也没有。上述原因令不少企业放弃使用这个很…

JS刷新页面的几种方法

转载自 JS刷新页面的几种方法 Javascript刷新页面的几种方法&#xff1a; 1 history.go(0) 2 location.reload() 3 locationlocation 4 location.assign(location) 5 document.execCommand(‘Refresh‘) 6 window.navigate(location) 7 location.replace(location) …

16岁应该遵循什么_成人学习一般遵循的规律

成人学习一般遵循的规律第一阶段是激发起对过去的经历的回忆&#xff0c;让学习者回头想想自己以前做了些什么&#xff0c;是在什么情况下运用什么方法做的&#xff1b;第二阶段&#xff0c;启发学习者对这些经历进行反思&#xff0c;检讨这些经历的成功与失败之所在&#xff0…

stream进行分组统计

// //groupingBy分组 // Map<Integer, Long> map houseList.stream().collect(Collectors.groupingBy(House::getBuildId, Collectors.counting())); // //控制台输出map // map.forEach((k,v)->{ // System.out.println("k"k",v"v)…

js实现页面跳转重定向的几种方式

转载自 js实现页面跳转重定向的几种方式 这篇文章主要介绍js实现页面跳转重定向的几种方式,需要的朋友可以参考下 第一种&#xff1a; <script language"javascript"type"text/javascript"> window.location.href"http://shanghepinpai.c…

二分查找+思路分析

思路分析 代码实现 package com.atguigu.search;/*** 创建人 wdl* 创建时间 2021/3/23* 描述*/ //注意&#xff1a;使用二分查找的前提是&#xff0c;该数组是有序的 public class BinarySearch {public static void main(String[] args) {int arr[]{1,8,10,89,1000,1234};int…

SQLServer On Linux Package List on CentOS

问题引出 “鸟儿啊&#xff0c;到底SQLServer on Linux肚里装了多少东西&#xff0c;在我们的CentOS系统安装了哪些物理文件呢&#xff1f;”&#xff0c;老鸟这天火急火燎的问道。“这个啊&#xff1f;让本鸟帮你一探究竟。”&#xff0c;菜鸟耐心回答道。 问题分析 菜鸟一边想…

开发环境 Minio 添加桶的操作流程-页面操作

命令操作 d开发环境 Minio 添加桶的操作流程_摇曳的精灵的博客-CSDN博客_minio创建桶 页面操作

python 可视化数据库_python实现地址分布可视化

当你知道某些详细地址信息&#xff0c;该如何利用。本文通过调用百度地图接口&#xff0c;实现用户可视化展示&#xff0c;便于更清楚地了解用户。注册百度地图开放平台帐号Python调用通过http调用接口格式如下&#xff1a;全选复制放进笔记http://api.map.baidu.com/geocoder/…