軟考 演算法 選擇

2021-07-31 13:47:01 字數 2073 閱讀 3514

選擇排序的本質是先假設第乙個數是最大/小的

,記錄下第乙個數的位置,讓第乙個數去跟後面的數比較,如果有比他更大

/小的,就用這個更大

/小的數去繼續比較,依照這個規則在這一趟中找到最大

/小的,和第乙個數交換位置。

後面的數也是這樣交換。

選擇是固定位置找元素,而插入是固定元素找位置

以下我都以找最小數為例:

選擇排序乍一看來有一點像抓起乙個最小的數直接扔到第乙個位置上了,其實他的關鍵在於記錄了數的位置

第一趟,

先記錄下

12的位置,

12和後面的數比較,比到

9發現,

9<12

,記錄下

9的位置,用

9繼續和後面的數比較,比到

6發現,

6<9

,記錄下

6的位置,用

6和後面的數比較,

6比後面的數都小,就6和

12的位置交換(即最小的數和第乙個數交換)

第二趟同理,記錄

15的位置

,然後用

15去和後面的數比較,直到找到最小的9,將

9和15的位置交換

第三趟同理,15和

12的位置交換

紅線部分是每一趟比較之後找出的數,我們可以看到,選擇排序的左下角都是有序區,還記得插入排序**是有序區嗎?

選擇排序核心**:

int temp = 0;

for (int i = 0; i < arr.length - 1; i++)

}//最後把最小的數與第一的位置交換

temp = arr[i]; //把第乙個原先認為是最小值的數,臨時儲存起來

arr[i] = arr[minindex]; //把最終我們找到的最小值賦給這一趟的比較的第乙個位置

arr[minindex] = temp; //把原先儲存好臨時數值放回這個陣列的空地方, 保證陣列的完整性

我又要說這句話了,其根本還是兩個數交換位置

選擇排序時間複雜度:

空間複雜度:

最優情況(已經有序,本就不要交換位置,就不需要借助第三變數

temp

): o(0)

最差情況(逆序,全部都要交換位置):o(

n)

軟考又見軟考

我這地兒 報名截止時間都快到了,3月4日,我才知道開始報名了。大三了,課程少了些。一直想考這個證來著,無奈時間太緊要不就是專業課還沒學。現在已經定下要考本專業研了,方向嘛 唉也說不准,大家都知道這個證是其次的搞技術的話還是能力問題,我的想法考這個是為了梳理專業知識,以備研究生專業課的考試 以後很可能...

軟考 軟考之路

面對軟考你是怎樣的心境呢?從最開始我拿到軟考書開始,感覺好厚呀,還有三門自考,這是要把自己置於何地了呢?但是翻開書本,看到那熟悉的知識,很多都是自考中的知識,這個時候是不是該悔恨當初沒有好好學習自考了呢?一 三遍讀書法 一本書從開始讀,到每一遍的不斷閱讀將書本讀薄,將知識理解,每一遍都是不可缺少的一...

軟考之軟考總結

從準備軟考到軟考結束,差點兒相同三個月的時間。儘管我們學計算機的時間已經不短,可是大規模 系統性的學習計算機理論的知識的時候,當從組成原理到編譯原理,從資料庫到作業系統,從物件導向技術到設計模式,儘管之前大都都接觸過,可是當全部理論性的知識,排著長隊,等著你一一檢閱的時候,你才發現,原來自己肚子裡的...