選擇排序 直接選擇排序

2022-08-20 02:30:15 字數 1143 閱讀 6570

直接選擇排序

這個系列是回顧之前所學,是用python商量著完成的。

路過的大佬就當看個樂,實現演算法的方式不一,也有討巧的做法。

我只講講我的思路,希望大家瀏覽的時候能多多提建議,共同學習共同進步。

選擇排序之直接選擇排序的基本思路:

將序列中最小的數,拿出來與第乙個數交換,再到剩下的數中選出最小的數出來與第二個數交換,如此重複

怎麼實現:

1.首先錨定第乙個要交換的值i,下標從0開始,一共需要遍歷n-1遍

2.然後從i到len(list)中遍歷。如果找到比i更小的數,就交換他們的值,如果沒有這次遍歷就結束了,i值位置不變

3.前面交換了值的部分無需遍歷,i+1,繼續往後面中的數去遍歷

以下是具體實現:

1

defselected_sort(list):

2 min_index =03#

根據直接選擇排序的特性,那麼第乙個數肯定無疑是最小的值,min_index=0 沒有毛病

4for i in range(0, len(list)-1):5#

總共就比較n-1次,最後乙個不用比較肯定是整個陣列中最大的值6#

i從0開始無非是將陣列中最小的數先遍歷出來,放在第一位3

7for j in

range(i, len(list)):8#

這個迴圈無非是從j中遍歷出比當前min_index還小的值9#

從i開始的原因是,i之前的值已經是排好序的不需要再改動

10if list[j] 如果當前還有比min_index,即i下標值還要小的,就交換值,沒有就是i最小,那就不需要改動

12 min_index =j

13 list[min_index], list[i] =list[i], list[min_index]14#

這裡為什麼是i + 1?不是 += 1?因為每一次min_index都是指向待排序序列的第乙個下標

15 min_index = i + 1

16return list

以上就是全部內容,接下來實現合併演算法

選擇排序 直接選擇排序

演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...

選擇排序 直接選擇排序

直接選擇排序也成為簡單選擇排序。對於乙個待排序數列,每次從無序區選擇乙個最小的元素,放入有序區 初始時有序區為空 直到無序區元素只有乙個 即整個數列的最大值 具體操作 第i趟排序開始,數列分為有序區a 0,i 1 和無序區a i,n 1 從無序區中選擇最小元素a k 將a k 放在無序區的最左邊的位...

選擇排序 直接選擇排序

直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r 0 r n 1 中選取最小值,與r 0 交換,第二次從r r n 1 中選取最小值,與r 1 交換,第i次從r i 1 r n 1 中選取最小值,與r i 1 交換,第n 1次從r n ...