归并排序 java_归并排序(Java实现)
生活随笔
收集整理的這篇文章主要介紹了
归并排序 java_归并排序(Java实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package primary_01;/** 歸并排序* 1.算法實現* 2.驗證算法的正確性* 3.分析算法的復雜度*/public class Merge_sort {public static void main(String[] args) {int arr []= {2,1,6,5,9,8,2020,199};sort(arr, 0, arr.length-1);for (int i : arr) {System.out.print(i+" ");}}/** 歸并排序* 1.劃分的過程* mid * 2.歸并的過程* merge* 3.遞歸的過程* 遞歸的實質*/private static void sort(int[] arr,int l,int h) {if(h <= l || arr.length<2) {return;}int mid=l+((h-l)>>1);// int mid=l+(h-l)/2;sort(arr,l,mid);sort(arr,mid+1,h);merge(arr,l,mid,h);}private static void merge(int[] arr, int l, int mid, int h) {int help [] =new int [h-l+1];int p1=l;int p2=mid+1;int index;for(index=0;p1<=mid && p2<=h ; index++) {help[index] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];}while(p2 <= h) {help[index++]=arr[p2++];}while(p1 <= mid) {help[index++]=arr[p1++];}for(int i=0;i<help.length;i++) {arr[l++]=help[i];}}}
/*** 算法復雜度分析* 時間復雜度:O(n*logn)* master公式運用* master公式的使用T(N) = a*T(N/b) + O(N^d)1) log(b,a) > d -> 復雜度為O(N^log(b,a)) 2) log(b,a) = d -> 復雜度為O(N^d * logN) 3) log(b,a) < d -> 復雜度為O(N^d)對于歸并排序:T(N)=2*T(N/2)+O(N) 復雜度為O(N*logN)*/
總結
以上是生活随笔為你收集整理的归并排序 java_归并排序(Java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费安卓模拟器手机版(免费安卓模拟器)
- 下一篇: spring 数据库 链接db2_Dru