merge排序
来源:互联网 发布:淘宝助理不显示宝贝 编辑:程序博客网 时间:2024/06/06 11:46
merge排序关键在于merge函数
import leet.ArrayUtils;import java.util.Arrays;/** * Created by fhqplzj on 16-9-29 at 下午6:58. */public class AnotherMergeSort { private int[] aux; public void merge(int[] nums, int lo, int mid, int hi) { System.arraycopy(nums, lo, aux, lo, hi - lo + 1); int i = lo, j = mid + 1; for (int k = lo; k <= hi; k++) { if (i > mid) { nums[k] = aux[j++]; } else if (j > hi) { nums[k] = aux[i++]; } else if (aux[i] < aux[j]) { nums[k] = aux[i++]; } else { nums[k] = aux[j++]; } } } private void sort(int[] nums, int lo, int hi) { if (lo < hi) { int mid = (lo + hi) >>> 1; sort(nums, lo, mid); sort(nums, mid + 1, hi); merge(nums, lo, mid, hi); } } public void sort(int[] nums) { int n = nums.length; aux = new int[n]; sort(nums, 0, n - 1); } public void sortBottomUp(int[] nums) { int n = nums.length; aux = new int[n]; for (int size = 1; size < n; size *= 2) { for (int lo = 0; lo + size < n; lo += 2 * size) { merge(nums, lo, lo + size - 1, Math.min(lo + 2 * size - 1, n - 1)); } } } public static void main(String[] args) { AnotherMergeSort anotherMergeSort = new AnotherMergeSort(); int[] nums = ArrayUtils.generateRandomIntArray(0, 100, 50); System.out.println(Arrays.toString(nums)); anotherMergeSort.sortBottomUp(nums); System.out.println(Arrays.toString(nums)); }}
0 0
- Merge排序
- merge排序
- 归并排序(merge sort)
- 归并排序(Merge sort)
- 归并排序Merge-Sort
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序Merge sort
- 归并排序(Merge)
- 归并排序 (Merge Sort)
- 归并排序(Merge Sort)
- 归并排序 Merge sort
- merge sort归并排序
- 归并排序 merge sort
- 递归merge排序
- STL排序之merge
- 第4周 项目6--多项式求和
- LeetCode 292. Nim Game
- hibernate3.3.2学习笔记---三种对象状态&删除数据&获取数据库对象&更新数据库对象
- 方法中怎样调用本类中的方法
- Part 2 of 2 Two‘s complement
- merge排序
- Python, Missing argument XXX
- Redis 3.0的集群部署
- LEEAlert 自定义 UIAlertView
- Shader学习笔记4
- TextView中设置指定位置字符颜色
- 初识JAVA
- 算法分析(总结)排序算法性能及比较总结
- 使用RecyclerView在出现的问题