使用python 基礎排序演算法設計,氣泡排序,插入排序,快速排序...對一組無序資料進行排序演算法設計,要求如下:
輸入:[1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
輸出:[1, 3, 5, 5, 22, 23, 34, 34, 37, 74, 75, 86, 456]
核心演算法:迴圈比較相鄰的兩個元素,如果前面乙個元素比後面乙個元素大,則交換位置。
#!/usr/bin/env python# -*- coding: utf-8 -*-
def bubble_sort(data_source):
length = len(data_source)
for i in range(1, length):
for j in range(length - i):
if data_source[j] > data_source[j + 1]:
data_source[j], data_source[j + 1] = data_source[j + 1], data_source[j]
return data_source
if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print bubble_sort(test_array)
核心演算法:從頭到尾迴圈,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入,因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。
#!/usr/bin/env python# -*- coding: utf-8 -*-
def insert_sort(data_source):
count = len(data_source)
for i in range(1, count):
key = data_source[i]
j = i - 1
while j >= 0:
if data_source[j] > key:
data_source[j], data_source[j + 1] = key, data_source[j]
j -= 1
return data_source
if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print insert_sort(test_array)
核心演算法:每次迴圈,取乙個基數,將序列分成三部分:比基數小的數序列,基數,比基數大的序列。不斷重複對每個序列進行相同的處理,直到每個序列為空,則完成排序
#!/usr/bin/env python# -*- coding: utf-8 -*-
def quick_sort(data_source):
length = len(data_source)
if length == 0:
return
else:
left =
right =
for i in range(1, length):
if data_source[0] > data_source[i]:
else:
return quick_sort(left) + [data_source[0]] + quick_sort(right)
if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print quick_sort(test_array)
幾種常見的排序例項 c
部分函式儲存在下面的標頭檔案中。不喜勿碰,有錯誤敬請指點,謝謝。include include fun1.h using namespace std int main int i,j 直接插入排序 for i 1 i 10 i 希爾排序 int len 10 while true a k len t...
python快速排序介紹例項 Python排序例項
python歸併排序 測試 如下 defguibing list1 n len list1 print list1 if n 1 returnlist1 half n 2left res guibing list1 half right res guibing list1 half returnme...
python常見排序演算法 python常用排序演算法
def bubble sort alist 氣泡排序 n len alist for i in range n 1 外層迴圈次數 for j in range n 1 i 這裡 記得要 i if alist j alist j 1 alist j alist j 1 alist j 1 alist ...