選擇排序法

2021-10-08 21:42:42 字數 963 閱讀 1227

"""

每一趟從列表中選擇乙個最小的值,然後和第乙個值交換位置。所以第一趟比較了n次

以此類推第二趟比較了n-1

一共比較了多少趟:n-1趟

選擇排序的時間複雜度為n趟*每一趟比較的n次。所以最壞時間複雜度為o(n**2)

"""def select_sort(mylist):

n=len(mylist)

for j in range(1,n):

min_index=j-1 #min是列表中最小值的下標位

for i in range(j,n):

if mylist[i] < mylist[min_index]:

min_index=i

mylist[j-1],mylist[min_index] = mylist[min_index],mylist[j-1]

def select_sort2(mylist,start):

n=len(mylist)

if start==(n-1): #遞迴的邊界

return

min_index=start #min是列表中最小的下標位,首先選取列表中第乙個值為最小值

for i in range(start+1,n):

if mylist[i] < mylist[min_index]:

min_index = i

mylist[start],mylist[min_index] = mylist[min_index],mylist[start]

select_sort2(mylist,start+1)

if __name__ == '__main__':

l=[89,23,11,99,10,34,9,56,8]

print(l)

# select_sort(l)

select_sort2(l,0)

print(l)

排序法之選擇排序法

首先通過陣列中元素的比較方式來分析 用陣列中第乙個角標的元素與陣列中第二個角標的元素進行比較,發現9比6大,進行位置置換,此處應該定義乙個三方變數,用來記錄住置換過程的元素值,然後再用第乙個角標的元素與下乙個角標元素進行比較,按照全面的原則進行置換位置,如果前者小於後者,則不置換位置,一次比較,當第...

氣泡排序法 選擇排序法

相鄰兩個數進行比較 如果前者比後者大 就把前者和後者互換 比如十個數 經過九次比較 就可以得到乙個最大的數字於排列的最末端 再經過八次比較 可以得到乙個第二大的數 依次類推 即最大的數一次一次冒泡上來。include int main printf n 資料排序 for i 0 i 9 i 列印資料...

選擇排序法

1.直接選擇排序法 基本思想 每一趟 第i趟,i 0,1,2,n 1 在後面n i個待排序記錄中選出關鍵字最小的記錄,作為有序記錄序列的第i個記錄。直到第n 2趟完,待排記錄只剩下乙個,不完再選了!直接選擇排序法 void selectionsort int parry,int ilen if k ...