八大排序算法之-归并排序 java代码
来源:互联网 发布:js判断滚动条是否存在 编辑:程序博客网 时间:2024/06/09 17:07
import java.util.Arrays;/** * Created by Administrator on 2017/8/2. */public class mergeSort_ { public static void main(String args[]) { int[] arr = { 6, 9, 1, 3, 1, 2, 2, 5, 6, 1, 3, 5, 9, 7, 2, 5, 6, 1, 9 }; //[1, 1, 1, 1, 2, 2, 2, 3, 3, 5, 5, 5, 6, 6, 6, 7, 9, 9, 9] mergeSort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); } /*算法思想:(拆分+合并)(采用递归方法:将一个序列从中间划分成两部分,然后在每一部分再划分,直至各个部分都 只包含一个元素,接下来归并) * 1.拆分成只包含一个元素的多个子序列 * 2.对子序列进行归并*/ /*时间复杂度:O(nlogn) * 空间复杂度:O(n) * 稳定性:稳定*/ private static void mergeSort(int[] arr, int start, int end) { int mid = (start + end)/2; if (start<end) { //左边 mergeSort(arr,start,mid);//左边包含mid值 //右边 mergeSort(arr,mid+1,end); //左右归并 merge(arr,start,mid,end); } } private static void merge(int[] arr, int start, int mid, int end) { int [] tmp = new int[end-start+1]; int l = start; int r = mid + 1; int indextmp = 0; while (l<=mid && r <= end) { if (arr[l]<=arr[r]) {//<=保证序列具有稳定性 tmp[indextmp++] = arr[l++]; }else { tmp[indextmp++] = arr[r++]; } } while (l<=mid){//把左边剩余的部分移入数组 tmp[indextmp++] = arr[l++]; } while (r<=end) {//把右边剩余部分移入数组 tmp[indextmp++] = arr[r++]; } for (int i = 0; i<tmp.length; i++) { arr[start+i] = tmp[i]; } }}
阅读全文
0 0
- 八大排序算法之-归并排序 java代码
- 八大排序算法之归并排序
- 八大排序算法之归并排序
- 八大排序算法 之 归并排序
- 八大排序算法之归并排序
- 八大排序算法之-基数排序 java代码
- 八大排序算法-归并排序
- 八大排序算法--归并排序
- 八大排序算法-归并排序
- 八大排序算法之-直接插入排序 java代码
- 八大排序算法之-希尔排序 java代码
- 八大排序算法之-快速排序 java代码
- 八大排序算法之-冒泡排序 java代码
- 八大排序算法之-选择排序 java代码
- 八大排序算法之-堆排序 java代码
- 八大排序之归并排序
- java八大排序算法之冒泡排序
- Java八大排序算法之希尔排序
- 【HDU1969】Pie(二分法)
- UVa10092: The Problem with the Problem Setter 题解
- QSettings 读写配置文件
- Oracle笛卡尔积与连接查询
- mac 下安装 ActiveMQ
- 八大排序算法之-归并排序 java代码
- 梯度
- sklearn中文文档——1.1. 普通线性模型
- 经典离线求lca[模板]
- Maven的安装配置及初次创建项目与java单元测试工具JUnit
- WebGIS学习(一)——开篇谈WEBGIS
- show and tell,让机器看图说话(show attention and tell)
- 自定义view
- 三、Java运行环境之 cent os安装nginx