python 直接插入和簡單選擇排序

2021-09-27 08:16:23 字數 1627 閱讀 3368

1. 直接插入排序

直接插入排序的基本思想:將乙個記錄插入到已排序好的有序表中,從而得到乙個新記錄數增加1的有序表。即:先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。

直接插入排序的時間複雜度是o(n^2)

**實現:

'''

'''def

insert_sort

(listnum)

: length =

len(listnum)

for i in

range(1

, length)

: j = i -

1 key = listnum[i]

while j >=0:

if key < listnum[j]

: listnum[j +1]

= listnum[j]

listnum[j]

= key

j = j -

1return listnum

if __name__ ==

'__main__'

: list =[49

,38,65

,97,76

,13,27

,49,55

,4]print

(insert_sort(list)

)

2. 簡單選擇排序

簡單選擇排序的基本思想:每一趟從待排序的記錄中選出關鍵字最小(最大)的記錄,順序放在已排好序的子檔案的最後(最前),直到全部記錄排序完畢。

時間複雜度分析:乙個含有n個記錄組成的序列,需要進行n-1次掃瞄,第一次掃瞄(n-1)個記錄,第二次(n-2)個記錄……

時間複雜度為:n(n-1)/2 即 時間複雜度為o(n^2)。

**實現:

def

******_sort

(listnum)

: length =

len(listnum)

for i in

range

(length-1)

:#一共進行的比較輪數

k = i #預設設定最小值索引

min= listnum[i]

for j in

range

(i +

1, length)

:if listnum[j]

<

min:

k = j

min= listnum[j]

if k != i:

listnum[i]

, listnum[k]

= listnum[k]

, listnum[i]

return listnum

if __name__ ==

'__main__'

: list =[49

,38,65

,97,76

,13,27

,49,55

,4]print

(******_sort(list)

)

排序演算法 簡單選擇,冒泡和直接插入

排序演算法 簡單選擇,冒泡和直接插入 較好的一些鏈結 選擇 冒泡和直接插入 選擇排序 一 選擇排序 1 在待排序序列中,找到第乙個最大 最小 元素,存放在排序序列的起始位置 2 在剩餘未排序的元素中,繼續尋找最大 最小 元素,然後放到已經排序的序列的第二個位置 3 以此類推。時間複雜度為n的平方 t...

直接插入排序和簡單選擇排序

簡單選擇排序的思想 簡單選擇排序的基本思想是每一趟在 n i 1個記錄中選取關鍵字最小的記錄作為有序序列的第i個記錄 直接插入排序思想 基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的,記錄加1的有序表。兩者都是第二for迴圈都是不斷查詢,乙個是不斷往後找,乙個在當前i,不斷往前找。...

單鏈表的直接插入 簡單選擇插入演算法

單鏈表的直接插入排序 void insertsort linklist l p next q next q next p p r 設計乙個演算法,實現在乙個帶表頭結點的單鏈表上的簡單選擇排序演算法 單鏈表中每個結點2個域 data和link,要求先使用型別說明準確描述你所使用的單鏈表儲存表示 typ...