【排序算法】——归并排序
2015-09-27 16:38
351 查看
场景:代码实现堆排序,选择使用Java代码
思路:把待排数组平均分成两组,递归分组,直到每一组剩下一个元素后,两两数组进行有序合并。
代码实现
思路:把待排数组平均分成两组,递归分组,直到每一组剩下一个元素后,两两数组进行有序合并。
代码实现
package Sort; /** * @author yummy */ public class MergeSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MergeSort test = new MergeSort(); int []a = {1,7,2,8,3,6,5,4,7,0,12,4}; System.out.print("排序前:"); for(int i = 0; i < a.length; i++) System.out.print(a[i]+" "); System.out.println(" "); mergeSort(a,0,a.length-1); System.out.print("排序后:"); for(int i = 0; i < a.length; i++) System.out.print(a[i]+" "); System.out.println(" "); } /** * * @param array 待排数组 * @param start * @param end */ public static void mergeSort(int[] array,int start,int end){ if(start >= end) return; int mid = (start+end)/2; mergeSort(array,start,mid); mergeSort(array,mid+1,end); merge(array,start,mid,end); } /** * 合并操作 * @param array * @param left * @param center * @param right */ public static void merge(int[] array,int start,int center,int end){ //临时数组 int[] temp = new int[end-start+1]; //第二个数组头元素引索 int secondArr = center+1; //临时数组头元素引索 int tempArr = 0; //记录下start位置 int flag = start; while(start <= center && secondArr <= end) { if(array[start] <= array[secondArr]) temp[tempArr++] = array[start++]; else temp[tempArr++] = array[secondArr++]; } while(start <= center) { temp[tempArr++] = array[start++]; } while(secondArr <= end) { temp[tempArr++] = array[secondArr++]; } tempArr = 0; while(flag <= end) { array[flag++] = temp[tempArr++]; } temp = null; } }
相关文章推荐
- linux 命令
- POJ1579:Function Run Fun
- Scala深入浅出进阶经典 第76讲:模式匹配下的赋值语句
- 【UIKit-110-4】#import <UIKit/UITableView.h>编辑模式
- 06-图3 六度空间
- WWDC 2014 Session 205/217 Extension 注意事项
- HTML表格
- DOS批处理开机自动运行常用软件
- LeetCode之Unique Paths
- 06-图2 Saving James Bond - Easy Version
- 九度OJ 1068 球半径和数量 (模拟)
- 单链表的基本操作(建立.遍历.添加.删除)
- 使用AndroidScreenSlidePager开源库
- JavaScript高级程序设计之面向对象的程序设计之创建对象之动态原型模式 第6.2.5讲笔记
- Scala深入浅出进阶经典 第75讲:模式匹配下的For循环
- 06-图1 列出连通集
- 分布式内存文件系统Tachyon
- C# 动态数组
- LeetCode:Remove Duplicates from Sorted Array
- 05-树9 Huffman Codes