常用排序算法之归并排序
2016-07-24 15:14
381 查看
常用排序算法之冒泡排序
常用排序算法之快速排序
常用排序算法之插入排序
常用排序算法之希尔排序
常用排序算法之选择排序
常用排序算法之堆排序
归并排序算法
运行
输出
常用算法时间复杂度和空间复杂度表
常用排序算法之快速排序
常用排序算法之插入排序
常用排序算法之希尔排序
常用排序算法之选择排序
常用排序算法之堆排序
归并排序算法
/** * 归并排序 * @param array * @return */ public static int[] mergingSort(int[] array) { sort(array, 0, array.length - 1); return array; } public static void sort(int[] data, int left, int right) { if (left < right) { //找出中间索引 int center = (left + right) / 2; //对左边数组进行递归 sort(data, left, center); //对右边数组进行递归 sort(data, center + 1, right); merge(data, left, center, right); } } public static void merge(int[] data, int left, int center, int right) { int[] tmpArr = new int[data.length]; int mid = center + 1; int third = left; int tmp = left; while (left <= center && mid <= right) { if (data[left] <= data[mid]) { tmpArr[third++] = data[left++]; } else { tmpArr[third++] = data[mid++]; } } while (mid <= right) { tmpArr[third++] = data[mid++]; } while (left <= center) { tmpArr[third++] = data[left++]; } while (tmp <= right) { data[tmp] = tmpArr[tmp++]; } }
运行
/** * 待排序的数组 */ private static int[] array = { 12, 10, 5, 9, 5, 32, 16, 1, 9, 99, 80, 3, 18, 19, 20, 25, 7, 15 }; public static void main(String[] args) { int[] result = SortUtils.mergingSort(array.clone()); System.out.println(Arrays.toString(result)); }
输出
[1, 3, 5, 5, 7, 9, 9, 10, 12, 15, 16, 18, 19, 20, 25, 32, 80, 99]
常用算法时间复杂度和空间复杂度表
相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- JavaScript实现多种排序算法
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 使用Java实现希尔排序算法的简单示例
- 排序算法的javascript实现与讲解(99js手记)
- 图文详解Heap Sort堆排序算法及JavaScript的代码实现
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- C语言演示对归并排序算法的优化实现
- JS及PHP代码编写八大排序算法
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- 算法学习入门之使用C语言实现各大基本的排序算法