归并排序
来源:互联网 发布:淘宝客招募平台 编辑:程序博客网 时间:2024/06/07 14:40
归并排序:就是把数组拆分,把拆分后的数组进行排序,然后在合并。图如下所示:
代码实现如下:
package guibing;import java.util.Arrays; public class MergeSortDemo {private int [] arr;public MergeSortDemo(int[] arr){this.arr=arr;}/** * @param arr 要排序的数组 * @param low 排序数组的起始下标 * @param hight 排序数组的结束位置 * @return 返回排序后的数组*/public int[] sort(int[] arr,int low,int hight){int mid=(low+hight)/2;//取中间的位置if(low<hight){//如果小的小标比大的下标小,则说明数组还要拆分sort(arr,low,mid);//给左边的进行拆分,在排序sort(arr,mid+1,hight);//给右边的拆分,在排序mergeSort(arr,low,mid,hight);// 合并}return arr;}/** * @param arr 要排序的数组 * @param low 合并的下界 * @param hight 合并的上届 * */private void mergeSort(int[] arr, int low, int mid, int hight) {int i=low;int j=mid+1;int index=0;//定义一个零时数组,int[] temp=new int[(hight-low+1)];、//给零时数组赋值while(i<=mid&&j<=hight){if (arr[i] < arr[j]) { temp[index++] = arr[i++]; } else { temp[index++] = arr[j++]; } }while(i<=mid){temp[index++]=arr[i++];}while(j<=hight){temp[index++]=arr[j++];}//吧零时数组的值赋给原数组for(int i1=0;i1<temp.length;i1++){arr[i1+low]=temp[i1];}}public static void main(String []a){int[] arr={123,5456,463,3478,858,9,2,88,34};MergeSortDemo m=new MergeSortDemo(arr); arr=m.sort(arr, 0, arr.length-1);System.out.println(Arrays.toString(arr));}}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- iOS解析JSON
- linux默认python升级.
- 面向对象
- oracle的正则表达式
- C# 正则表达式判断是否是数字、是否含有中文、是否是数字字母组合
- 归并排序
- linux(菜鸟)---linux文件目录学习
- 纪念2014 TI DSP大奖赛
- oracle中union和union all区别与性能分析
- 构建高并发高可用的电商平台架构实践
- ASP.NET同时上传多个图片
- iOS 调试
- Linux 替换^M的方法
- Java现实WebSocket