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...