一、經典冒泡法。
1、初始實現:
lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
for j in range(length-1-i):
if lst[j] > lst[j+1]:
st[j], lst[j+1] = lst[j+1], lst[j]
print(lst)
2、優化實現:
lst = [9,5,1,2,6]
length = len(lst)
for i in range(length):
flag = False
for j in range(length-1-i):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
flag = True
if not flag:
break
print(lst)
二、簡單選擇排序
1、一元簡單選擇排序
lst = [1,3,6,5,2,4,7,9]
length = len [lst]
for i in range(length):
maxindex = i
for j in range(i+1,length):
if lst[j] > lst[i]:
maxindex = j
if i != maxindex:
lst[i], lst[maxindex] = lst[maxindex], lst[i]
print(lst)
2、二元簡單選擇排序
lst = [1,3,6,5,2,4,7,9]
length = len(lst)
for i in range(length//2): # 兩邊一起排序,所以少一半
maxindex = i
minindex = -i-1或 length-1-i
minorigin = minindex
for j in range(i+1,length-i): # 每次左右固定一個,就少比較1個
if lst[j] > lst[maxindex]:
maxindex = j
if lst[-j-1或 length-1-j] < lst[minindex]:
minindex = -j-1 或 length-1-j
if lst[maxindex] == lst[minindex]: # 元素全相同
break
if i != maxindex:
lst[i], lst[maxindex] = lst[maxindex], lst[i]
# 如果最小值被交換過,要更新索引
if i == length + minindex 或 i == minindex:
minindex = maxindex - length 或 maxindex
# 最小值索引不同,但值相同就沒必要交換了
if minorigin != minindex and lst[minorigin] != lst[minindex]:
lst[minorigin], lst[minindex] = lst[minindex], lst[minorigin]
print(lst)
三、直接插入排序
num = [1,5,8,6,3,4,2]
nums = [0] + num
for i in range(2,len(nums)):
nums[0] = nums[i]
j = i - 1
if nums[j] > nums[0]: # ???
while nums[j] > nums[0]:
nums[j+1] = nums[j]
j -= 1
ums[j+i] = nums[0]
print(nums)
排序算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
我是怎麼從 Excel 表哥轉到 Python 的
蘇克1900
2019-02-24 14:16:50
Python正則表達式
蒼簡
2019-02-24 13:54:12
23個Python爬蟲開源項目代碼:爬取微信、淘寶、豆瓣、知乎、微博等
蒼簡
2019-02-24 13:54:12
5/20python之列表
王悟冥
2019-02-24 13:47:51
Mac OS 上安裝PyCharm專業版並破解註冊
Hansion
2019-02-24 13:12:51
python萌新:從零基礎入門到放棄
編程黑格爾
2019-02-24 13:06:36
519. leetcode題目講解(Python):隨機翻轉矩陣(Random Flip Matrix )
夏山聞汐
2019-02-24 12:59:06
《Flask Web開發:基於Python的Web應用開發實戰》筆記二、
mbb97
2019-02-23 13:43:04
ftrack Python API
wx5c6a499ea4601
2019-02-23 13:40:57
Python帶權重隨機數的簡單實現
vincent_tech
2019-02-23 13:37:42
python學習(一)
kaixinhai2010
2019-02-23 13:36:05
Python中修改Pk10平臺出租字符串的幾種方法
wojiuyong
2019-02-23 13:25:22
Python項目案例介紹,炫酷飛機大戰,內附源碼文件領取
扒皮狼
2019-02-23 12:53:12
Python 之 socket網絡模塊簡單應用
wx592bc92b285c7
2019-02-23 12:50:09
Python Day24 stark組件2
jedi911
2019-02-23 00:42:19
最新文章