Algorithm——MergeSort
来源:互联网 发布:VH软件 编辑:程序博客网 时间:2024/06/05 10:31
算法不多说,Divide and Conquer:将序列分为两个分别排序,然后归并到一起。
代码:
package com.zxy.algorithm;public class MergeSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] array = {1, 14, 8, 3, 6, 10, 5, 7, 2, 9, 11, 13, 4};mergeSort(array, 0, array.length - 1);}static int[] mergeSort(int[] array, int start, int end){int length = end - start + 1;if(length <= 1);else if(length == 2){if(array[start] > array[end]){int temp = array[end];array[end] = array[start];array[start] = temp;}}else {int mid = start + (length / 2);array = mergeSort(array, start, mid - 1);array = mergeSort(array, mid, end);array = merge(array, start, mid, end);}return array;}static int[] merge(int[] array, int start, int mid, int end){int[] data = new int[array.length];int i = start;int j = mid;int pos = start;while(i < mid && j <= end){if(array[i] < array[j])data[pos++] = array[i++];else {data[pos++] = array[j++];}}if(i == mid){while(j <= end)data[pos++] = array[j++];}else{while(i < mid)data[pos++] = array[i++];}for(int p = start; p <= end; p++){array[p] = data[p];}for (int k : array) {System.out.print(k + " ");}System.out.println();return array;}}
很重要的算法。
时间复杂度:O(nlogn), 是稳定排序。
0 0
- Algorithm——MergeSort
- One Algorithm A Day --- MERGESORT--分治法
- MergeSort
- mergesort
- MergeSort
- mergesort
- mergesort
- Mergesort
- mergesort
- mergeSort
- mergeSort
- mergesort
- MergeSort
- MergeSort
- MergeSort
- MergeSort
- Mergesort
- Mergesort
- 64. Minimum Path Sum
- 深入理解java虚拟机-1 内存结构与OutOfMemory溢出异常
- hash-table基础以及一些运用例子
- Swipe JS滑动插件
- ThinkPHP创建微信回调服务器验证
- Algorithm——MergeSort
- 拓扑排序 java
- 计算机视觉文献与代码资源及资料
- "singleTask"模式 切换到新的栈中
- 图像的二值化之大津法和迭代法
- iOS高仿城觅项目(开发思路和代码)
- Activiti的简单入门例子(经典的请假例子)
- bootstrap 显示下拉框
- 射频工具使用--未完待续