日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言遞歸實現歸并排序詳解_C 語言

作者:Icy?Hunter ? 更新時間: 2022-05-02 編程語言

歸并排序遞歸實現還是比較難理解的,感覺涉及遞歸一般理解起來都會比較有難度吧,但是看了b站視頻,然后照著打下來,然后自己寫了點注釋,就發現不知不覺都大概懂了。

這里的歸并講的是升序排序

歸并排序思路大概就是:先劃分數組,將數組劃分為左右半區,分成的左右半區,各自再劃分左右半區,一直劃分,直到最后左右半區的元素都為一個時,開始合并,因為都劃分為一個元素了,那么此時兩個元素的排序就非常簡單了,只需要比較大小就可以排序了,那么回溯上去會發現每組都是兩兩有序了,那么直接再依次比較兩組之間的排頭元素即可,取較小的賦值給臨時數組,然后排頭元素就變成后一個元素,一直這么比較,直到兩組數據有一組為空時,只需要將另一組不為空的接在臨時數組后面即可,因為此時不為空的剩下的元素是有序的且都比此時有序的臨時數組大,接完之后臨時數組就變成有序的數組了,那么再將臨時數組的元素復制到實際數組中去,最后釋放臨時數組空間,輸出實際數組,歸并排序結束,輸出的元素也是排好序的元素了。

這樣干講一定很抽象

這是b站視頻里的圖,十分生動形象了吧。

在這里插入圖片描述

代碼如下(除了視頻里的注釋,還加了點自己的注釋)

#include
using namespace std;
void print_arr(int arr[], int n){
	for(int i=0; i

總結

原文鏈接:https://blog.csdn.net/qq_52785473/article/details/123157841

欄目分類
最近更新