【java数据结构】归并排序
来源:互联网 发布:熊猫tv淘宝买竹子 编辑:程序博客网 时间:2024/06/14 11:43
package mergeSort;import java.util.Arrays;public class MergeSort { /** * 合并两段有序数组 * * @param arr * 原数组 * @param start * 第一段有序数组的起始下标 * @param mid * 第一段有序数组的结束下标 * @param end * 第二段有序数组的结束下标 */ private static void mergeArray(int[] arr, int start, int mid, int end) { int i = start, j = mid + 1, k = 0;// i为第一段数组的起始下标,j为第二段数组的起始下标,k为临时数组的下标 int[] arr2 = new int[end - start + 1];// 临时数组 while (i <= mid && j <= end) {// 比较两段数组的对应下表处的值,小的放前面(因为都是下标,所以都取等号) if (arr[i] <= arr[j]) { arr2[k++] = arr[i]; i++; } else { arr2[k++] = arr[j]; j++; } } while (i <= mid) {// 将第一段数组剩下的复制到临时数组 arr2[k++] = arr[i++]; } while (j <= end) {// 将第二段剩下的复制到临时数组 arr2[k++] = arr[j++]; } for (i = start, k = 0; i <= end; i++, k++) {// 复制到原数组 arr[i] = arr2[k]; } } /** * 全部合并 * * @param arr * 原数组 * @param gap * 每次合并的长度 * @param length * 数组长度 */ private static void merge(int[] arr, int gap, int length) { int i = 0; for (i = 0; i + 2 * gap - 1 < length; i = i + 2 * gap) {// 增量为gap*2 mergeArray(arr, i, i + gap - 1, i + 2 * gap - 1); } if (i + gap - 1 < length) {// 对于元素个数为奇数的情况,还剩两个数组,进行归并 mergeArray(arr, i, i + gap - 1, length - 1); } } /** * 排序 * * @param arr * 原数组 */ public static void mergeSort(int[] arr) { for (int gap = 1; gap < arr.length; gap = gap * 2) { merge(arr, gap, arr.length); /*System.out.print("gap=" + gap + ": "); System.out.println(Arrays.toString(arr));*/ } }}
阅读全文
0 0
- 【java数据结构】归并排序
- java数据结构排序之归并排序实现
- java数据结构代码记录---归并排序代码
- 数据结构基础 归并排序 java 实现
- 数据结构之归并排序的Java实现
- Java数据结构和算法之归并排序
- 数据结构之归并排序(java)
- 数据结构 排序 归并排序
- 【数据结构】:排序--归并排序
- 数据结构排序--归并排序
- java数据结构与算法-高级排序-归并排序
- Java 数据结构(一)---排序(三) 归并排序
- 数据结构之归并排序
- 数据结构--归并排序
- 【数据结构】归并排序
- 数据结构 - 归并排序
- C++数据结构--归并排序
- 数据结构-归并排序
- tp框架一个controller控制器对应一个view下的文件夹
- 当RecycleView跟ScrollView冲突设置自定义LinearLayoutManager的时候出现IllegalArgumentException异常
- AWS-RedHat下安装Firekylin
- hadoop架构分析之启动脚本分析
- Spring整合mybatis
- 【java数据结构】归并排序
- Android 系统日志的抓取之logcat的使用
- 杭州移动手机靓号
- centos 安装nginx php mariadb
- 如何写出小而清晰的函数?(JS 版)
- eclipse导入项目后不单jsp有红色小叉一个servlet也出现问题
- 10分钟让你明白MySQL是如何利用索引的
- hibernate
- listview多种类型条目显示