Rhyme/归并排序Java版
来源:互联网 发布:2017年互联网金融数据 编辑:程序博客网 时间:2024/06/07 05:36
归并排序Java版
package com.maple.mergesort;import java.util.Arrays;/** * merge sort * * @author RhymeChiang * @date 2017/12/07 **/public class MergeSort { /** * merge sort main method * * @param a source data * @param p the start index of the array * @param r the last index of the array * @return */ public static void mergeSort(int a[], int p, int r) { if (p < r) { int q = (p + r) / 2; mergeSort(a, p, q); mergeSort(a, q + 1, r); merge(a, p, q, r); } } /** * unit operation of merge * * @param a source data * @param p the start index of left sort array * @param q the middle index of this array * @param r the last index of right sort array */ private static void merge(int a[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; //cut and put the array into left and right sort array //left one for stop int left[] = new int[n1+1]; int right[] = new int[n2+1]; //init the data into the left and right sort array for (int i = 0; i < n1; i++) { left[i] = a[p+i]; } for (int j = 0; j < n2; j++) { right[j] = a[j + q+1]; } left[n1]=Integer.MAX_VALUE; right[n2]=Integer.MAX_VALUE; //start merge sort int i = 0;// the pointer of left array int j = 0;// the pointer of right array for (int k = p; k <= r; k++) { if (left[i] >= right[j]) { a[k] = right[j]; j++; } else { a[k] = left[i]; i++; } } } public static void main(String[] args) { int a[] = new int[]{2,1,5,6,2,8,1,7,10,9}; mergeSort(a, 0, a.length-1); System.out.println(Arrays.toString(a)); }}
测试结果
算法时间复杂度O(nlgn)
阅读全文
0 0
- Rhyme/归并排序Java版
- Rhyme/插入排序Java版
- Rhyme/Quick Sort 快速排序Java版
- Java版归并排序
- 归并排序(JAVA版)
- 归并排序—Java版
- Rhyme/算法之简单版桶排序
- Rhyme/算法 冒泡排序优化版
- 排序算法之归并排序Java版
- 排序之归并排序java版
- java排序--归并排序
- 排序-归并排序-Java
- Rhyme/二分查找(binary search)Java版
- Rhyme/冥运算(分治策略)Java版
- 归并排序解析(java版)
- 二路归并排序java版
- java版基础排序归并排
- Java版 原地二路归并排序
- Pycaffe-简单测试caffe模型的分类效果和运行速度
- PHP常量
- 虚拟内存和物理内存
- Hbase与Mapreduce集成的案例
- 上拉加载更多和下拉刷新
- Rhyme/归并排序Java版
- win10 IIS 已启用32位程序 网站报错HTTP ERROR 503
- Linux 中 chkconfig 用法
- 最新高清IT职业技能图谱(15图)
- Linux网络编程基础--socket常用选项
- PAT:1126. Eulerian Path (25)
- ajax中xmlhttp.readyState==4 && xmlhttp.status==200 是什么意思
- Ionic3 Demo
- leetcode 231. Power of Two & 326. Power of Three & 342. Power of Four