归并排序
来源:互联网 发布:python中函数传参数 编辑:程序博客网 时间:2024/05/22 02:11
归并排序:
思想:
归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
java代码具体实现
public class MergeSort { public static int[] sort(int[] nums,int low,int high){ int mid=(low+high)/2; if(low<high){ //左边 sort(nums,low,mid); //右边 sort(nums,mid+1,high); //左右归并 merge(nums,low,mid,high); } return nums; } public static void merge(int[] nums,int low ,int mid,int high){ int[] temp=new int[high-low+1]; int i=low;//左指针 int j=mid+1;//右指针 int k=0; //将较小的数移到新数组中 while(i<=mid && j<=high){ if(nums[i]<nums[j]){ temp[k++]=nums[i++]; }else{ temp[k++]=nums[j++]; } } //把左边剩余的数移到数组 while(i<=mid){ temp[k++]=nums[i++]; } //把右边剩余的数移到数组 while(j<=high){ temp[k++]=nums[j++]; } //把新数组中的数覆盖nums数组 for(int k2=0;k2<temp.length;k2++){ nums[k2+low]=temp[k2]; } } public static int[] getRandomArray(int len,int min,int max){ int[] array=new int[len]; for(int i=0;i<len;i++){ array[i]=(int)(Math.random()*(max-min+1)+min); } return array; } public static void main(String[] args) { int[] nums=getRandomArray(10000,0,100000); long time=System.nanoTime(); sort(nums,0,nums.length-1); System.out.println(System.nanoTime()-time); System.out.println(Arrays.toString(nums)); }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- ARKit-环境配置(Xcode、iOS、Unity)
- 1.9 C# 面向对象的三大特性--多态
- vue Mock数据
- Matlab中sum函数,max函数以及any函数
- 文件操作 修改后的通讯录
- 归并排序
- Android .9.png图片的制作与使用
- js中(function(){…})()立即执行函数写法理解(经过控制台测试后修改) <转载>
- SSM项目,文件下载
- [LeetCode] 26. Remove Duplicates from Sorted Array
- [Python]python反射
- ARKit-简介
- [Hive]JsonSerde使用指南
- 卷积神经网络减小过拟合方法