欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          如何利用java實現(xiàn)歸并排序

          如何利用java實現(xiàn)歸并排序

          什么是歸并排序?

          歸并排序是利用遞歸與分治的技術(shù)將數(shù)據(jù)序列劃分為越來越小的半子表,再對半子表排序,最后再用遞歸方法將排好序的半子表合并成越來越大的有序序列。

          核心思想

          將兩個有序的數(shù)列合并成一個大的有序的序列。通過遞歸,層層合并,即為歸并。

          (推薦教程:java快速入門)

          實現(xiàn)代碼:

          import java.util.Arrays;  /**  * @author god-jiang  * @date 2020/1/13  */ //歸并排序,時間復(fù)雜度為O(N*logN),空間復(fù)雜度為O(N) public class MergeSort {     public static void MergeSort(int[] arr, int start, int end) {         //分治的結(jié)束條件         if (start >= end) {             return;         }         //保證不溢出取start和end的中位數(shù)         int mid = start + ((end - start) >> 1);         //遞歸排序并且合并         MergeSort(arr, start, mid);         MergeSort(arr, mid + 1, end);         Merge(arr, start, mid, end);     }      //合并     public static void Merge(int[] arr, int start, int mid, int end) {         int[] temp = new int[end - start + 1];         int p1 = start;         int p2 = mid + 1;         int p = 0;         while (p1 <= mid && p2 <= end) {             if (arr[p1] > arr[p2]) {                 temp[p++] = arr[p2++];             } else {                 temp[p++] = arr[p1++];             }         }         while (p1 <= mid) {             temp[p++] = arr[p1++];         }         while (p2 <= end) {             temp[p++] = arr[p2++];         }         for (int i = 0; i < temp.length; i++) {             arr[i + start] = temp[i];         }     }      public static void main(String[] args) {         int[] a = {2, 4, 6, 1, 3, 7, 9, 8, 5};         MergeSort(a, 0, a.length - 1);         System.out.println(Arrays.toString(a));     } }

          運行結(jié)果:

          如何利用java實現(xiàn)歸并排序

          相關(guān)視頻教程推薦:java視頻教程

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號