归并排序
来源:互联网 发布:java条码生成器 编辑:程序博客网 时间:2024/06/06 02:10
归并排序的时间复杂度为O(nlogn)
它采用的是分治法的思想,先将序列拆分为1个个子序列,直到每个序列的长度为1,此时每个序列都是有序的;然后将两个有序的子序列合并成为一个更大的子序列,递归此过程,直到子序列的长度和原序列相同,此时排序完成,图示如下:
具体代码如下:
import java.util.Arrays;/** * Created by 亮大王 on 2017/8/31. */public class no2 { public static void main(String[] args) { int a[] = {49, 38, 65, 97, 76, 13, 27}; System.out.println(Arrays.toString(a)); no2 nn = new no2(); nn.mergeSort(a, 0, a.length - 1); System.out.println(Arrays.toString(a)); } /** * 二路归并 */ public void mergeArray(int a[], int low, int mid, int high) { int temp[] = new int[high - low + 1]; int i = low; int j = mid + 1; int k = 0; while (i <= mid && j <= high) { if (a[i] < a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while (i <= mid) { temp[k++] = a[i++]; } while (j <= high) { temp[k++] = a[j++]; } System.arraycopy(temp, 0, a, low, temp.length); } public void mergeSort(int a[], int low, int high) { int mid = (high + low) / 2; if (low < high) { mergeSort(a, low, mid); mergeSort(a, mid + 1, high); mergeArray(a, low, mid, high); } }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- html、css整理笔记
- 短信二次接口开发demo
- 图论
- opencv mat resize 后转为 qimage 图形变形
- icheck插件使用实例
- 归并排序
- Laravel版本升级的坑
- Html之Combox选不上的问题-yellowcong
- Linux使用tcpdump抓取网络数据包示例
- python
- 计算机表示和操纵信息的方式
- 有序表查询之四:查询实现总结
- sonar安装过程
- 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行