国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序

這篇具有很好參考價值的文章主要介紹了『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

本文內(nèi)容借鑒一本我非常喜歡的書——《數(shù)據(jù)結(jié)構(gòu)與算法圖解》。學(xué)習(xí)之余,我決定把這本書精彩的部分摘錄出來與大家分享。???

目錄

寫在前面

1.選擇排序

2.選擇排序?qū)崙?zhàn)

3.選擇排序的實現(xiàn)

4.選擇排序的效率

5.忽略常數(shù)

6.大O的作用

7.總結(jié)


?『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-622635.html

寫在前面

大 O 是一種能夠比較算法效率,并告訴我們在特定環(huán)境下應(yīng)采用何種算法的偉大工具。但我們不能完全依賴于它。

因為有時候即使兩種算法的大 O 記法完全一樣,但實際上其中一個比另一個要快得多。

本章我們就來學(xué)習(xí)如何分辨那些效率貌似一樣的算法,從而選出較快的那個。


1.選擇排序

上一章分析了冒泡排序算法,其效率是 O(N^2 )?,F(xiàn)在我們再來探索另一種排序算法,選擇排
序,并將它跟冒泡排序?qū)Ρ纫幌隆?/p>

選擇排序的步驟如下。

(1) 從左至右檢查數(shù)組的每個格子,找出值最小的那個。在此過程中,我們會用一個變量來記住檢查過的數(shù)字的最小值(事實上記住的是索引,但為了看起來方便,下圖就直接寫出數(shù)值)。如果一個格子中的數(shù)字比記錄的最小值還要小,就把變量改成該格子的索引,如圖所示。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

(2) 知道哪個格子的值最小之后,將該格與本次檢查的起點交換。第 1 次檢查的起點是索引 0,
第 2 次是索引 1,以此類推。下圖展示的是第一次檢查后的交換動作。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

(3) 重復(fù)第(1) (2)步,直至數(shù)組排好序。?


2.選擇排序?qū)崙?zhàn)

以數(shù)組 [4,2,7,1,3] 為例,步驟如下。

開始第 1輪檢查。

首先讀取索引 0。根據(jù)此算法的定義,它是目前遇到的最小值(因為現(xiàn)在只檢查了一個格子),于是記下其索引。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 1步:將索引 1的值 2與目前的最小值 4進(jìn)行比較。

2比 4還要小,于是將目前的最小值改為 2。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 2步:再與下一個值做比較。因為 7大于 2,所以最小值還是 2。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 3步:將 1和目前的最小值做比較。?

1比 2還要小,于是目前的最小值更新為 1。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 4步:比較 3和目前的最小值 1。因為現(xiàn)在已經(jīng)走到數(shù)組盡頭了,所以可以斷定 1是整個
數(shù)組的最小值。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 5步:本次檢查的起點是索引 0,不管那里的值是什么,我們都應(yīng)該將最小值 1換到那里。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

現(xiàn)在 1就排到正確的位置上了。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

可以開始第 2輪檢查了。?

準(zhǔn)備工作:因為索引 0的值已符合其排位,所以這一輪從下一個格子開始,即索引 1,其值為 2,也是目前本輪所遇到的最小值。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 6步:將 7跟目前的最小值 2進(jìn)行比較。因為 2小于 7,所以最小值仍為 2。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

?第 7步:將 4跟目前的最小值 2進(jìn)行比較。因為 2小于 4,所以最小值仍為 2。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 8步:將 3跟目前的最小值 2進(jìn)行比較。因為 2小于 3,所以最小值仍為 2。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

又走到數(shù)組盡頭了。本輪不需要做任何交換,2已在其正確位置上。于是第 2輪檢查結(jié)束,現(xiàn)在數(shù)組如下圖所示。?、

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

開始第 3輪檢查。?

準(zhǔn)備工作:從索引 2起,其值為 7。于是本輪目前最小值為 7。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 9 步:比較 4 與 7。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

將 4 記為目前的最小值。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 10 步:遇到 3,它比 4 還小。

于是 3 成了目前的最小值。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)第 11 步:到數(shù)組盡頭了,將 3 跟本輪起點 7 進(jìn)行交換。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

于是 3 排到正確位置上了。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

雖然我們可以看到現(xiàn)在整個數(shù)組都有序了,但計算機(jī)是看不到的,它只會繼續(xù)第 4輪檢查。

準(zhǔn)備工作:此輪檢查從索引 3開始,其值 4是目前的最小值。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

第 12步:比較 4和 7。?

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

4仍為最小值,而且它也處于本輪起點,因此無須任何交換。

因為最后一個格子左側(cè)的那些值都已在各自的正確位置上,所以最后一格也必然正確,于是排序結(jié)束。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)


3.選擇排序的實現(xiàn)

下面是用C語言實現(xiàn)的選擇排序:

void SelectSort(int arr[], int n)//升序
{
	for (int i = 0; i < n-1; i++) //n個數(shù),只需排好n-1個,剩下的一個自然在正確的位置上
	{
		int min = i;      //用min來記錄最小值的索引(下標(biāo))         
		
        for (int j = i+1; j < n; j++)  //從i索引的后一個開始比較
		{
			if (arr[j] < arr[min])
			{
				min = j;            //找到比自己小的數(shù)的索引,并成為它
			}
		}
		if (min != i)               //如果min的值改變,則與i處的值交換
		{
			int tmp = arr[i];
			arr[i] = arr[min];
			arr[min] = tmp;
		}
	}
}

下面來進(jìn)行分析:

for (int i = 0; i < n-1; i++)?

這個外層的循環(huán)代表每一輪檢查。在一輪檢查之初,我們會先記住目前的最小值的索引。

int min = i;

因此每輪開始時 min?都會是該輪的起點索引 i 。

注意我們實際上記錄的是最小值的索引,而非最小值本身。于是,第 1 輪開始時最小值的索引是 0,到第 2 輪則是 1,以此類推。

for (int j = i+1; j < n; j++)

這個內(nèi)層循環(huán)控制的是找出最小值的索引的過程。

if (arr[j] < arr[min])
{
	min = j;            
}

循環(huán)內(nèi)逐個檢查數(shù)組未排序的格子,若遇到比之前記錄的本輪最小值還小的格子值,就將min更新為該格子的索引。

內(nèi)層循環(huán)結(jié)束時,會得到未排序數(shù)值中最小值的索引。

if (min != i)
{
	int tmp = arr[i];
	arr[i] = arr[min];
	arr[min] = tmp;
}

然后再看看這個最小值是否已在正確位置,即該索引是否等于 i 。如果不是,就將 i 所指的值與最小值交換。


4.選擇排序的效率

選擇排序的步驟可分為兩類:比較和交換。

若有 N個元素,就會有 (N -?1) + (N -?2) + (N -?3) + … + 1次比較。

但每輪的交換最多只有 1 次。如果該輪的最小值已在正確位置,就無須交換,否則要做 1 次交換。相比之下,冒泡排序在最壞情況(完全逆序)時,每次比較過后都要進(jìn)行 1 次交換。

下表為冒泡排序和選擇排序的并列對比。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

從表中可以清晰地看到,選擇排序的步數(shù)大概只有冒泡排序的一半,即選擇排序比冒泡排序快一倍。?


5.忽略常數(shù)

但有趣的是,選擇排序的大 O記法跟冒泡排序是一樣的。

還記得我們說過,大 O記法用來表示步數(shù)與數(shù)據(jù)量的關(guān)系。所以你可能會以為步數(shù)約為 N^2的一半的選擇排序,其大 O會寫成 O(N ^2/ 2),以表示 N個元素需要 N ^2?/ 2步。如下表所示。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

但事實上,選擇排序的大 O記法為 O(N^2 ),跟冒泡排序一樣。這是因為大 O記法的一條重要
規(guī)則:

大 O 記法忽略常數(shù)。


6.大O的作用

盡管不能比較冒泡排序和選擇排序,大 O 還是很重要的,因為它能夠區(qū)分不同算法的長期增長率。當(dāng)數(shù)據(jù)量達(dá)到一定程度時,O(N)的算法就會永遠(yuǎn)快過 O(N^2 ),無論這個 O(N)實際上是O(2N)還是 O(100N)。

下圖為 O(N)和 O(N^2 )的對比。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

這就是大 O 記法忽略常數(shù)的原因。大 O 記法只表明,對于不同分類,存在一臨界點,在這一點之后,一類算法會快于另一類,并永遠(yuǎn)保持下去。至于這個點在哪里,大 O并不關(guān)心。

因此,不需要寫成 O(100N),歸類到 O(N)就好了。


7.總結(jié)

現(xiàn)在我們已經(jīng)掌握了一些非常強(qiáng)大的算法分析手法。我們能夠使用大 O去判斷各種算法的效率,即便兩種算法的大 O記法一樣,也知道如何對比它們。不過在對比算法時,還需要考慮一個重要因素。至今我們關(guān)注的都是最壞情況下算法會跑得多慢,但其實最壞情況并不總會發(fā)生。沒錯,我們遇到的大都是平均情況。下一章,我們會學(xué)習(xí)怎樣顧及所有情況。

『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序,排序算法(C語言版),新星計劃免費學(xué)習(xí)專欄·數(shù)據(jù)結(jié)構(gòu)與算法,排序算法,算法,數(shù)據(jù)結(jié)構(gòu)

?

到了這里,關(guān)于『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』⑤ - 選擇排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)初階】八大排序算法+時空復(fù)雜度

    【數(shù)據(jù)結(jié)構(gòu)初階】八大排序算法+時空復(fù)雜度

    學(xué)會控制自己是人生的必修課 1.直接插入排序思想: 假設(shè)現(xiàn)在已經(jīng)有一個有序序列,如果有一個數(shù)字插入到這段序列的末尾,我們會選擇拿這個數(shù)和它前面的每個數(shù)字都比較一遍,如果前面的數(shù)字比他大,那我們就讓前面的數(shù)字賦值到這個被插入的數(shù)字位置,依次與前面的數(shù)

    2024年02月01日
    瀏覽(32)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】排序算法:冒泡排序,冒泡排序優(yōu)化,選擇排序、選擇排序優(yōu)化

    【數(shù)據(jù)結(jié)構(gòu)與算法】排序算法:冒泡排序,冒泡排序優(yōu)化,選擇排序、選擇排序優(yōu)化

    目錄 一、冒泡排序 1、冒泡排序思想 2、冒泡排序算法的性能分析 代碼實現(xiàn): 二、選擇排序 1、選擇排序思想 2、選擇排序算法的性能分析? 代碼實現(xiàn): 1、冒泡排序思想 冒泡排序的基本思想是通過相鄰元素之間的比較和交換來逐步將最大(或最?。┑脑匾频接疫叄ɑ蜃筮?/p>

    2024年01月19日
    瀏覽(26)
  • 『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』? - 堆排序詳解【附完整源碼】

    『初階數(shù)據(jù)結(jié)構(gòu) ? C語言』? - 堆排序詳解【附完整源碼】

    ?= 目錄 0.寫在前面 1.什么是堆? 2. 堆排序 2.1 建堆 2.1.1 AdjustUp(向上調(diào)整算法) 2.1.2 AdjustDown(向下調(diào)整算法) 2.2 兩種建堆算法的時間復(fù)雜度 2.2.1 AdjustUp建堆的時間復(fù)雜度 2.2.2 AdjustDown建堆的時間復(fù)雜度 2.3?排序 3.堆排序的時間復(fù)雜度 完整源碼 你是否對堆排序早有耳聞?身

    2024年02月16日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)與算法—插入排序&選擇排序

    數(shù)據(jù)結(jié)構(gòu)與算法—插入排序&選擇排序

    目錄 一、排序的概念 二、插入排序?? 1、直接插入排序? 特性總結(jié): 2、希爾排序 特性總結(jié): ?三、選擇排序 1、直接選擇排序? 特性總結(jié): 2、堆排序—排升序(建大堆) 向下調(diào)整函數(shù) 堆排序函數(shù) 特性總結(jié): 代碼完整版:? ?頭文件 ?函數(shù)文件 ?測試文件 排序 :所謂排序,

    2024年01月20日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】排序算法(選擇排序,冒泡排序,插入排序,希爾排序)

    基本概念這了就不浪費時間解釋了,這四種都是很簡單的排序方式,本專欄后續(xù)文章會出歸并排序,計數(shù)排序,快速排序,堆排序,桶排序等排序算法,今天這篇文章中給出選擇排序,冒泡排序,插入排序和希爾排序的實現(xiàn); 如果發(fā)現(xiàn)文章中有錯誤,還請大家指出來,我會非

    2024年02月15日
    瀏覽(97)
  • 數(shù)據(jù)結(jié)構(gòu)算法--2 冒泡排序,選擇排序,插入排序

    數(shù)據(jù)結(jié)構(gòu)算法--2 冒泡排序,選擇排序,插入排序

    思想就是將相鄰元素兩兩比較,當(dāng)一個元素大于右側(cè)相鄰元素時,交換他們的位置,小于右側(cè)元素時,位置不變,最終序列中的最大元素,像氣泡一樣,到了最右側(cè)。 這時冒泡排序第一輪結(jié)束,數(shù)列最右側(cè)元素9的位置可認(rèn)為是一個有序區(qū),有序區(qū)目前有一個元素. 第二輪排序

    2024年02月13日
    瀏覽(91)
  • 【數(shù)據(jù)結(jié)構(gòu)】八大排序之簡單選擇排序算法

    【數(shù)據(jù)結(jié)構(gòu)】八大排序之簡單選擇排序算法

    ?? 個人主頁 :修修修也 ?? 所屬專欄 :數(shù)據(jù)結(jié)構(gòu) ?? 操作環(huán)境 : Visual Studio 2022 目錄 一.簡單選擇排序簡介及思路 二.簡單選擇排序的代碼實現(xiàn) 三.簡單選擇排序的優(yōu)化 四.簡單選擇排序的時間復(fù)雜度分析 結(jié)語 簡單選擇排序算法(Simple Selection Sort) 是一種簡單直觀的 選擇排序算

    2024年02月01日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】:選擇排序與快速排序

    【數(shù)據(jù)結(jié)構(gòu)與算法】:選擇排序與快速排序

    ?? 個人主頁 : Quitecoder ?? 專欄 :數(shù)據(jù)結(jié)構(gòu)與算法 我的博客即將同步至騰訊云開發(fā)者社區(qū),邀請大家一同入駐:騰訊云 歡迎來到排序的第二個部分:選擇排序與快速排序! 選擇排序是一種簡單直觀的比較排序算法。該算法的基本思想是在每一輪中選出當(dāng)前未排序部分的最

    2024年03月17日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】排序算法(一)—>插入排序、希爾排序、選擇排序、堆排序

    【數(shù)據(jù)結(jié)構(gòu)】排序算法(一)—>插入排序、希爾排序、選擇排序、堆排序

    ?? 樊梓慕: 個人主頁 ? ?? 個人專欄: 《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》《LeetCode刷題筆記》《實訓(xùn)項目》 ?? 每一個不曾起舞的日子,都是對生命的辜負(fù) 目錄 前言 1.直接插入排序 2.希爾排序 3.直接選擇排序 4.堆排序 本篇文章博主將介紹排序算法中的插入排序:直接

    2024年02月08日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】常見排序算法——常見排序介紹、選擇排序(直接選擇排序、堆排序)交換排序(冒泡排序)

    【數(shù)據(jù)結(jié)構(gòu)】常見排序算法——常見排序介紹、選擇排序(直接選擇排序、堆排序)交換排序(冒泡排序)

    ??選擇排序是一種簡單但不高效的排序算法,其基本思想是從待排序的數(shù)據(jù)中選擇最?。ɑ蜃畲螅┑脑胤诺揭雅判虻臄?shù)據(jù)末尾。具體操作步驟如下: (1)找到數(shù)據(jù)中最小的元素,并把它交換到第一個位置; (2)在剩下未排序的元素中找到最小的元素,并把它交換到已排

    2024年02月04日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包