关闭页面特效

有关归并排序-Java实现

有关归并排序:其中的分治思想很值得参考:

1 /** 2 * 归并排序 块合并 3 * @param num 目标的排序数组 4 * @param leftIndex 传入的分治块的做左端索引 5 * @param mid 中间索引 6 * @param rightIndex 传入的分治块的做右端索引 7 * @param temp 中间转储数组 8 */ 9 public static void merge(int[] num,int leftIndex,int mid,int rightIndex,int[] temp){ 10 int i=leftIndex; 11 int j=mid+1; 12 int t=0; 13 //每次都分成两组进行比较合并,每次合并一定是单侧有序的 14 while (i<=mid&&j<=rightIndex){ 15 if (num[i]<num[j]){ 16 temp[t++]=num[i++]; 17 } 18 else{ 19 temp[t++]=num[j++]; 20 } 21 } 22 //剩余的进行合并 23 while (i<=mid){ 24 temp[t++]=num[i++]; 25 26 } 27 while (j<=rightIndex){ 28 temp[t++]=num[j++]; 29 } 30 //数组进行归为 31 t=0; 32 int tIndex=leftIndex; 33 while (tIndex<=rightIndex){ 34 num[tIndex++]=temp[t++]; 35 } 36 } 37 38 /** 39 * 分治合并 40 * @param num 目标排序数组 41 * @param leftIndex 左端索引 42 * @param rightIndex 右端索引 43 * @param temp 中间转储数组 44 */ 45 public static void mergeSort(int[] num,int leftIndex,int rightIndex,int[] temp) 46 { 47 //递归分治、分模块 48 if (leftIndex<rightIndex){ 49 int mid=(leftIndex+rightIndex)/2; 50 mergeSort(num,leftIndex,mid,temp); 51 mergeSort(num,mid+1,rightIndex,temp); 52 merge(num,leftIndex,mid,rightIndex,temp); 53 54 } 55 }

 


__EOF__

作  者Mexcellent
出  处https://www.cnblogs.com/Mexcellent/p/17273897.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   Mexcellent  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-03-30 JavaWebDay1
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示