成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據結構與算法:歸并算法

開發 前端
歸并排序是建立在歸并操作上的一種有效,穩定的排序算法。該算法是采用分治思想,將已有序的子序列合并,得到完全有序的序列;

一、分治思想

分治,就是分而治之,將一個大問題分解成小的子問題來解決。小的子問題解決了,大問題也就解決了。

分治算法一般都是用遞歸來實現的。分治是一種解決問題的處理思想,遞歸是一種編程技巧。

二、歸并排序

歸并排序是建立在歸并操作上的一種有效,穩定的排序算法。

該算法是采用分治思想,將已有序的子序列合并,得到完全有序的序列;

即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為二路歸并。

第一步:申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列

第二步:設定兩個指針,最初位置分別為兩個已經排序序列的起始位置

第三步:比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置

重復步驟3直到某一指針超出序列尾。

三、歸并排序代碼實現

import java.util.*;

class MergeSort {
public static void main(String[] args) {
int[] arr = {5,7,4,2,0,3,1,6};
mergeSort(arr, 0, arr.length-1);
System.out.print(Arrays.toString(arr));
}
public static void mergeSort(int[] arr,int left,int right){
if(left>=right){
return;
}
int mid = (left + right) / 2;
//先將數組按照中間下標分解成兩部分,遞歸直到分解每部分只有1個元素為止
mergeSort(arr, left, mid);
mergeSort(arr, mid+1, right);
//分解結束后,由下到上,遞歸合并已經排序好的兩部分
merge(arr, left, mid, right);

}
//需要注意的是整個合并過程中并沒有將兩個被合并的數組單獨拎出來,
//二者始終是存在于一個數組地址上的
public static void merge(int[] arr,int left,int mid,int right){
//根據拿到的左邊界,我們定其為第一個數組的指針
int s1 = left;
//根據中間位置,讓中間位置右移一個單位,那就是第二個數組的指針
int s2 = mid+1;
//根據左右邊界相減我們得到這片空間的長度,以此聲明額外空間
int[] temp = new int[right - left+1];
//定義額外空間的指針
int i = 0;
while(s1<=mid && s2 <=right){
//如果第一個數組的指針數值小于第二個數組的,那么其放置在臨時空間上
if(arr[s1]<=arr[s2]){
temp[i++] = arr[s1++];
}else{//否則是第二個數組的數值放置于其上
temp[i++] = arr[s2++];
}
}
//如果這是s1仍然沒有到達其終點,那么說明它還有剩
while(s1<=mid){
//因為我們知道每個參與合并的數組都是有序數組,因此直接往后拼接即可
temp[i++] = arr[s1++];
}
while(s2<=right){//同上
temp[i++] = arr[s2++];
}
for(int j = 0;j<temp.length;j++){//數組復制
arr[j+left] = temp[j];
}
}

}

二、歸并排序復雜度

時間復雜度O(N*logN)

空間復雜度O (N)

穩定性:穩定

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-04-16 09:40:52

Java數據結構算法

2020-10-21 14:57:04

數據結構算法圖形

2023-10-27 07:04:20

2023-04-27 09:13:20

排序算法數據結構

2023-03-10 08:07:39

數據結構算法計數排序

2023-03-02 08:15:13

2021-05-12 09:07:09

Java數據結構算法

2023-03-07 08:02:07

數據結構算法數列

2023-03-13 10:08:31

數據結構算法

2023-11-06 06:43:23

單鏈表查詢數據結構

2017-08-31 09:45:43

JavaArrayList數據

2023-09-15 10:33:41

算法數據結構

2020-10-12 11:48:31

算法與數據結構

2019-03-29 09:40:38

數據結構算法前端

2023-02-08 07:52:36

跳躍表數據結構

2023-10-30 08:31:42

數據結構算法

2020-10-20 08:14:08

算法與數據結構

2021-04-15 09:36:44

Java數據結構算法

2020-12-31 05:31:01

數據結構算法

2021-01-28 07:33:34

JavaScript鏈表數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费一区二区三区免费视频 | 亚洲高清中文字幕 | 日韩久久中文字幕 | 久久久婷 | 国产亚洲一区二区三区在线 | 中文字幕一区在线观看视频 | 国产精品成人一区二区 | 黄色网址在线免费播放 | 国产精品久久久久久久久久 | 日韩欧美国产一区二区三区 | 欧美日韩在线一区二区 | 欧美一级二级视频 | 一区二区三区视频免费观看 | 国产在线一区二 | 亚洲精品久久视频 | 国产丝袜人妖cd露出 | 天堂一区二区三区 | 久久国产视频一区 | 国产激情一区二区三区 | 色频| 久久99精品久久久久久 | 免费性视频 | 国产片网站| 精品国产一区二区在线 | 久久久免费少妇高潮毛片 | 日韩一级免费大片 | 超碰综合| av免费观看在线 | 午夜亚洲 | 欧美成人一区二免费视频软件 | 精品国产伦一区二区三区观看体验 | 欧美久久不卡 | 久久一热| 日韩中文一区二区 | 欧美激情在线精品一区二区三区 | 国产精品免费一区二区三区四区 | 黄色一级毛片 | 99久久久久 | 久久精品国产99国产精品 | 国产精品夜夜夜一区二区三区尤 | 毛片站|