基础算法(三)---归并排序(Java)
来源:互联网 发布:2015年nba新秀体测数据 编辑:程序博客网 时间:2024/06/07 22:24
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
算法步骤:
- 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
- 设定两个指针,最初位置分别为两个已经排序序列的起始位置
- 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
- 重复步骤3直到某一指针达到序列尾
- 将另一序列剩下的所有元素直接复制到合并序列尾
public class MergeSort { public static <T extends Comparable<? super T>> void mergeSort(T[] a) { T[] tmpArray = (T[]) new Comparable[a.length]; mergeSort(a, tmpArray, 0, a.length - 1); } private static <T extends Comparable<? super T>> void mergeSort(T[] a, T[] tmpArray, int left, int right) { if (left < right) { int center = (left + right) / 2; mergeSort(a, tmpArray, left, center); mergeSort(a, tmpArray, center + 1, right); merge(a, tmpArray, left, center + 1, right); } } private static <T extends Comparable<? super T>> void merge(T[] a, T[] tmpArray, int leftPos, int rightPos, int righEnd) { int leftEnd = rightPos - 1; int tmpPos = leftPos; while (leftPos <= leftEnd && rightPos <= righEnd) { if (a[leftPos].compareTo(a[rightPos]) <= 0) { tmpArray[tmpPos++] = a[leftPos++]; } else { tmpArray[tmpPos++] = a[rightPos++]; } } while (leftPos <= leftEnd) { tmpArray[tmpPos++] = a[leftPos++]; } while (rightPos <= righEnd) { tmpArray[tmpPos++] = a[rightPos++]; } for (int i = 0; i < a.length; i++, righEnd--) { a[righEnd] = tmpArray[righEnd]; } }}
0 0
- 基础算法(三)---归并排序(Java)
- java排序算法三(归并排序算法)
- 排序算法(三):归并排序
- 排序算法(三)-- 归并排序
- 算法学习(三)----归并排序
- Java排序算法(九):归并排序
- 老生常谈 排序算法(JAVA)-- 归并排序
- Java排序算法(九):归并排序
- Java排序算法(九):归并排序
- Java排序算法(九):归并排序
- 排序算法---归并排序 (java)
- Java排序算法(八):归并排序
- 排序算法--归并排序(JAVA)
- Java排序算法--归并排序(MergeSort)
- 【算法】排序算法(三)——归并排序
- 常见排序算法整理(三)----归并排序、快速排序
- 【基础算法】排序-复杂排序之一(归并排序)
- 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
- ROC曲线,PR曲线,F1值和AUC概念解释及举例说明
- NIO Buffer代码示例
- 原生JS面向对象
- 记录CSDN账号被盗事件
- hdoj1846Brave Game
- 基础算法(三)---归并排序(Java)
- 卢辉《数据挖掘与数据化运营实战:思路、方法、技巧和应用》第一遍 读书笔记
- 线性表
- Python进阶之迭代器和生成器
- 1028. List Sorting (25) java
- java基础学习笔记之数据类型
- 第九周 贪心算法
- 315. Count of Smaller Numbers After Self Hard
- mysql 使用mariadb 安全审计插件