1. 程式人生 > 實用技巧 >vue2.x 實現資料視覺化大屏(可互動氣泡地圖、數字滾動、表格滾動、列表輪播、餅圖輪播、圓環圖)

vue2.x 實現資料視覺化大屏(可互動氣泡地圖、數字滾動、表格滾動、列表輪播、餅圖輪播、圓環圖)

歸併操作(merge),也叫歸併演算法,指的是將兩個已經排序的序列合併成一個序列的操作。歸併排序演算法依賴歸併操作。

遞迴法(Top-down)
1.申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列
2.設定兩個指標,最初位置分別為兩個已經排序序列的起始位置
3.比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置
4.重複步驟3直到某一指標到達序列尾
5.將另一序列剩下的所有元素直接複製到合併序列尾

//歸併排序

public static void merge_sort_cyq(int [] arr,int [] result,int start,int end){
if (start>=end){
return;
}
int mid=start+((end-start)>>1);
int start1=start,end1=mid;
int start2=mid+1,end2=end;
merge_sort_cyq(arr,result,start1,end1);
merge_sort_cyq(arr,result,start2,end2);
int k=start;
while (start1<=end1 && start2<=end2){
result[k++]=arr[start1]<=arr[start2]?arr[start1++]:arr[start2++];
}
while (start1<=end1){
result[k++]=arr[start1++];
}
while (start2<=end2){
result[k++]=arr[start2++];
}
for (k = start; k<=end ; k++) {
arr[k]=result[k];
}
}

public static void mergeSortCyq(int [] arr){
int[] result = new int[arr.length];
merge_sort_cyq(arr,result,0,arr.length-1);
}

=另外一種實現方式======

迭代法(Bottom-up)
原理如下(假設序列共有n個元素):

1.將序列每相鄰兩個數字進行歸併操作,形成ceil(n/2)個序列,排序後每個序列包含兩/一個元素
2.若此時序列數不是1個則將上述序列再次歸併,形成ceil(n/4)個序列,每個序列包含四/三個元素
3.重複步驟2,直到所有元素排序完畢,即序列數為1