Python演算法(氣泡排序和選擇排序)

2021-09-13 19:33:30 字數 2968 閱讀 1481

氣泡排序:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,一層一層的將較大的元素往後移動,類似氣泡慢慢變大的過程。

演算法思想:1.從第乙個和第二個開始比較,如果第乙個比第二個大,則交換位置;然後比較第二個和第三個,依次類推;

2.經過第一輪迴圈,最大的數已經排在最後一位,所以重複以上操作,第二大的數會排在倒數第二個位置。

3.則再重複n-1次排序完畢,因為最後乙個數字不需要排序了。

演算法實現:

1.首先生成乙個隨機數的列表

import random

random_num_list = random.sample(

range(1

,100),

20)print

(random_num_list)

[66, 70, 16, 98, 97, 52, 56, 76, 23, 27, 36, 38, 2, 47, 11, 58, 33, 46, 62, 99]
2.排序

#經過一輪排序,最大的數字移到最後一位。

for j in

range

(len

(random_num_list)-1

):if random_num_list[j]

> random_num_list[j+1]

: random_num_list[j]

, random_num_list[j+1]

= random_num_list[j+1]

, random_num_list[j]

print

(random_num_list)

[66, 16, 70, 97, 52, 56, 76, 23, 27, 36, 38, 2, 47, 11, 58, 33, 46, 62, 98, 99]
#經過n-1次上述過程,排序完成。

for i in

range

(len

(random_num_list)-1

):for j in

range

(len

(random_num_list)-1

):if random_num_list[j]

> random_num_list[j+1]

: random_num_list[j]

, random_num_list[j+1]

= random_num_list[j+1]

, random_num_list[j]

print

(random_num_list)

[2, 11, 16, 23, 27, 33, 36, 38, 46, 47, 52, 56, 58, 62, 66, 70, 76, 97, 98, 99]
選擇排序:由於氣泡排序每次都要進行交換位置,浪費記憶體,又有了選擇排序。

演算法思想:1.將第乙個數字設為最小值,依次和後面的數字進行比較,當有比第乙個數字小的數,則把最小值的索引置為該數字的索引,比較完之後,將最小值索引對應的數字和第一位交換;2.經過一輪操作,最小數排在第一位,然後將第二個數字設為最小值,以此類推;3.同樣地,經過n-1次,排序完成。

演算法實現:

random_num_list = random.sample(

range(1

,50),

20)print

(random_num_list)

#將最小的數排在第一位

i =0

minimal_index = i

for j in

range

(i+1

,len

(random_num_list)):

if random_num_list[j]

< random_num_list[minimal_index]

: minimal_index = j

random_num_list[i]

, random_num_list[minimal_index]

= random_num_list[minimal_index]

, random_num_list[i]

print

(random_num_list)

[7, 31, 26, 23, 48, 15, 18, 1, 49, 41, 3, 30, 44, 36, 24, 42, 17, 12, 38, 39]

[1, 31, 26, 23, 48, 15, 18, 7, 49, 41, 3, 30, 44, 36, 24, 42, 17, 12, 38, 39]

for i in

range

(len

(random_num_list)):

minimal_index = i

for j in

range

(i+1

,len

(random_num_list)):

if random_num_list[j]

< random_num_list[minimal_index]

: minimal_index = j

random_num_list[i]

, random_num_list[minimal_index]

= random_num_list[minimal_index]

, random_num_list[i]

print

(random_num_list)

[1, 3, 7, 12, 15, 17, 18, 23, 24, 26, 30, 31, 36, 38, 39, 41, 42, 44, 48, 49]

排序演算法 冒泡和選擇排序

氣泡排序的基本思想是 通過對待排序序列從前向後 從下標較小的元素開始 依次比較 相鄰元素的值,若發現逆序則交換,使值較大的元素逐漸從前移向後部,就象水底下的氣泡一樣逐漸向上冒。氣泡排序演算法 public static int maopaosort int initial return initia...

排序演算法 冒泡和選擇

最近複習一下排序演算法,從簡單的開始,陸續寫上來 一 氣泡排序 氣泡排序總的平均時間複雜度為 import random def bubblesort arr for i in range 0,len arr for j in range i 1,len arr if arr i arr j tem...

氣泡排序和選擇排序 python

排序方法有很多,實際和面試中我們面對最多可能就是氣泡排序和選擇排序 氣泡排序 在給定資料列表中從第乙個開始逐一和下乙個值進行比較,如果發現下乙個值大於自己就調換下位置,以此類推,到最後便可以實現從小到大的排序 選擇排序 在給定資料列表中找到最小的乙個數值,然後依次和後面的進行對比,比如我們認為最左側...