成人免费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-07 08:02:07

數據結構算法數列

2023-03-10 08:07:39

數據結構算法計數排序

2023-03-02 08:15:13

2021-05-12 09:07:09

Java數據結構算法

2023-02-08 07:52:36

跳躍表數據結構

2023-10-30 08:31:42

數據結構算法

2020-10-20 08:14:08

算法與數據結構

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

算法數據結構

2021-04-15 09:36:44

Java數據結構算法

2020-10-12 11:48:31

算法與數據結構

2019-03-29 09:40:38

數據結構算法前端

2023-09-25 12:23:18

Python

2020-10-30 09:56:59

Trie樹之美
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品视频一区二区三区 | 久久69精品久久久久久久电影好 | 精品欧美乱码久久久久久1区2区 | 国产乱码精品一区二区三区av | 精品国产乱码久久久久久丨区2区 | 国产免费国产 | 国产欧美在线一区 | 亚洲成人免费在线 | 国内精品视频免费观看 | 精品在线免费观看视频 | 男女羞羞免费网站 | 毛片av免费看 | 一级大片 | 黄色一级免费看 | 欧美国产在线一区 | 9999精品视频 | 天天躁日日躁狠狠的躁天龙影院 | 国产精品永久免费 | 国产日韩电影 | 成人网av| 91免费观看视频 | 欧美一级二级视频 | 国产精品成人一区二区三区夜夜夜 | 免费黄色av| 毛片网站免费观看 | 亚洲精品91| 久久99精品久久久久久狂牛 | 欧美片网站免费 | 亚洲高清在线 | 一区二区三区视频在线观看 | 激情小说综合网 | 中国毛片免费 | 欧美在线免费 | 亚洲a视频| 99精品欧美一区二区蜜桃免费 | 国产三区在线观看视频 | 在线视频91 | 国产精品久久久久久吹潮 | 久久国产免费 | 国产精品久久久久久久久久久免费看 | 欧美男人天堂 |