merge sort

空间复杂度:O(n)(sort list是O(1))

时间复杂度为O(nlgn)

稳定性:稳定排序

先局部有序,再整体有序

 1 public class Solution {
 2     /**
 3      * @param A an integer array
 4      * @return void
 5      */
 6     public void sortIntegers(int[] A) {
 7         int[] temp = new int[A.length];
 8         mergeSort(A, 0, A.length - 1, temp);
 9     }
10     
11     public void mergeSort(int[] A, int start, int end, int[] temp) {
12         if (start >= end) {
13             return;
14         }
15         mergeSort(A, start, (start + end) / 2, temp);
16         mergeSort(A, (start + end) / 2 + 1, end, temp);
17         
18         merge(A, start, end, temp);
19     }
20     
21     public void merge(int[] A, int start, int end, int[] temp) {
22         int mid = (start + end) / 2;
23         int left = start;
24         int right = mid + 1;
25         int index = start;
26         
27         while (left <= mid && right <= end) {
28             if (A[left] <= A[right]) {
29                 temp[index++] = A[left++];
30             } else {
31                 temp[index++] = A[right++];
32             }
33         }
34         while (left <= mid) {
35             temp[index++] = A[left++];
36         }
37         while (right <= end) {
38             temp[index++] = A[right++];
39         }
40         for (int i = start; i <= end; i++) {
41             A[i] = temp[i];
42         }
43     }
44 }
View Code

相关文章:

  • 2021-10-26
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
猜你喜欢
  • 2022-02-03
  • 2022-02-22
  • 2021-10-04
  • 2022-01-17
  • 2022-12-23
  • 2021-09-11
相关资源
相似解决方案