演算法之選擇排序

2021-08-31 21:20:45 字數 1721 閱讀 4641

陣列是連續地儲存在記憶體空間中,陣列的第乙個元素所在的位置是從0開始的,通常稱為第乙個元素的索引位置為0。當我們知道乙個資料的長度(通過len()方法去測量),就可以根據索引取出這個資料裡面的資料。

鍊錶是不連續的儲存在記憶體空間。鍊錶中的第乙個元素中儲存著下一元素的位址資訊,若要在鍊錶中查詢某個資料,則需要從頭到尾依次進行查詢。

* 兩者的區別:

a、隨機查詢:

陣列:由於資料是連續儲存的,所以能夠很容易地根據它的索引查詢到對應的數值————o(1);

鍊錶:跳躍性查收資料時,需要全表依次從頭開始查詢————o(n);

b、插入、刪除資料:

陣列:除尾部插入資料外,在指定位置上插入或者刪除資料後,該位置後面地資料都需要向後或者向前進行移動,若插入資料時,記憶體空間下一位置已被占用,則需要將陣列中共所有資料拷貝到其他位置————o(n);

鍊錶:在指定位置插入或者刪除資料,只需要變動該位置前面節點中下一節點地儲存位址————o(1);

"""將無序列表變為有序列表,公升序

"""def __init__(self, list):

self.list = list

self.result =

self.min_num = list[0]

self.min_index = 0

def find_min_num(self):

for i in range(1, len(self.list)):

if self.list[i] < self.min_num:

self.min_num = self.list[i]

self.min_index = i

return self.min_index

def add_to_list(self,num):

self.list.remove(num)

def back_zero(self):

self.min_index = 0

self.min_num = self.list[0]

def main(self):

while len(self.list) > 0:

if len(self.list) > 1:

num = self.find_min_num()

self.add_to_list(self.list[num])

self.back_zero()

else:

self.add_to_list(self.list[0])

return self.result

list = [17, 5, 8, 53, 87, 12, 19, 99, 23]

sort_li = sortlist(list)

print(sort_li.main())

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...

排序演算法之選擇排序

一 簡單選擇排序 1 基本思想 在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。簡單選擇排序的示例 2 操作方法 第一趟,從n 個記錄中...