归并排序算法和快速排序算法时间复杂度都为o(nlogn) ,且需要额外申请一个内存空间,用到的思想都是分治。 下边是我的代码可以拿去直接用。 public class MergeSort { public static void main(String[] args) { int arr[] = new int[]{1, 9, 2, 4, 88, 21, 15, 33, 16, 22, 51, 53, 99};//15 new MergeSort().merge_sort(arr); System.out.println(""); } public void merge_sort(int[] arr) { quick_sort_c(arr, 0, arr.length - 1); } private void quick_sort_c(int[] arr, int first, int end) { if (first >= end) return; int m = (first + end) / 2; quick_sort_c(arr, first, m); quick_sort_c(arr, m + 1, end); merge(arr, first, end, m); } private void merge(int arr[], final int s, final int e, final int m) { //把数组arr由 s-e 划分成两个区域 s-m m+1-e int temp[] = new int[(e - s)+1];//申请一个和arr原数组一样的新数组 int i = s, j = m + 1; int k; for (k = 0; i <&
归并排序算法(适合大量数据)
最新推荐文章于 2022-08-05 23:36:25 发布
本文介绍了归并排序算法,其与快速排序算法在时间复杂度上相同,均为O(nlogn),并且两者都需要额外的内存空间。博主分享了自己的归并排序代码,包括分治策略的快速排序辅助方法和实际的归并操作。通过实例展示了如何对数组进行归并排序,最终将排序后的结果存回原数组。
摘要由CSDN通过智能技术生成