java算法之归并排序
来源:互联网 发布:网络消费知识 编辑:程序博客网 时间:2024/05/23 07:23
基本思想
待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
代码
public class MergeSort { public static void mergeSort(int[] arr) { sort(arr, 0, arr.length - 1); } public static int[] sort(int[] arr, int low, int high) { int mid = (low + high) / 2; if (low < high) { // 左边 sort(arr, low, mid); // 右边 sort(arr, mid + 1, high); // 左右归并 merge(arr, low, mid, high); } return arr; } public static void merge(int[] arr, 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 (arr[i] < arr[j]) { temp[k++] = arr[i++]; } else { temp[k++] = arr[j++]; } } // 把左边剩余的数移入数组 while (i <= mid) { temp[k++] = arr[i++]; } // 把右边边剩余的数移入数组 while (j <= high) { temp[k++] = arr[j++]; } // 把新数组中的数覆盖arr数组 for (int k2 = 0; k2 < temp.length; k2++) { arr[k2 + low] = temp[k2]; } } public static void main(String[] args) { int[] a = new int[] { 49, 38, 65, 97, 76, 13, 27, 50 }; mergeSort(a); for (int i : a) System.out.print(i + " "); }}
时间复杂度
O(nlgn)
阅读全文
0 0
- java算法之归并排序
- java算法之归并排序
- 排序算法之归并排序(JAVA)
- Java排序算法之归并排序
- 排序算法之归并排序Java版
- Java实现排序算法之归并排序
- 排序算法之归并排序(JAVA)
- java排序算法之--归并排序
- 排序算法之归并排序(Java)
- 排序算法之归并排序(JAVA)
- 排序算法之归并排序 java
- 排序算法之归并排序(JAVA)
- 排序算法之归并排序java实现
- 排序算法之归并排序(JAVA)
- Java排序算法之归并排序
- 排序算法之归并排序(JAVA)
- Java排序算法之归并排序
- 排序算法之归并排序--Java语言
- 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等
- 问题 E: 画图
- WPF控件篇(二)
- Windows下Navicat远程连接Debian下的Mysql
- 2440uboot启动内核打印:Verifying Checksum ... Bad Data CRC ERROR: can't get kernel image!
- java算法之归并排序
- Linux ssh登录命令
- 前端偶遇之值栈
- 【DP入门】动态规划初步-几类子序列问题
- linux学习之旅(十五(下))&逻辑卷
- javascript
- 问题 F: 字符串匹配问题
- 头节点循环链表
- pssh使用指南