一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 快速排序的算法思想及Python版快速排序的實現示例

快速排序的算法思想及Python版快速排序的實現示例

2020-08-31 11:27cangmean Python

快速排序算法來源于分治法的思想策略,這里我們將來為大家簡單解析一下快速排序的算法思想及Python版快速排序的實現示例:

快速排序是C.R.A.Hoare于1962年提出的一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide-and-ConquerMethod)。

1.分治法的基本思想

分治法的基本思想是:將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。

2.快速排序的基本思想

設當前待排序的無序區為R[low..high],利用分治法可將快速排序的基本思想描述為:

(1)分解:

在R[low..high]中任選一個記錄作為基準(Pivot),以此基準將當前無序區劃分為左、右兩個較小的子區間R[low..pivotpos-1)和R[pivotpos+1..high],并使左邊子區間中所有記錄的關鍵字均小于等于基準記錄(不妨記為pivot)的關鍵字pivot.key,右邊的子區間中所有記錄的關鍵字均大于等于pivot.key,而基準記錄pivot則位于正確的位置(pivotpos)上,它無須參加后續的排序。

注意:

劃分的關鍵是要求出基準記錄所在的位置pivotpos。劃分的結果可以簡單地表示為(注意pivot=R[pivotpos]):

R[low..pivotpos-1].keys≤R[pivotpos].key≤R[pivotpos+1..high].keys

其中low≤pivotpos≤high。

(2)求解:

通過遞歸調用快速排序對左、右子區間R[low..pivotpos-1]和R[pivotpos+1..high]快速排序。

(3)組合:

因為當"求解"步驟中的兩個遞歸調用結束時,其左、右兩個子區間已有序。對快速排序而言,"組合"步驟無須做什么,可看作是空操作。

Python實現

原理: 先用初始數據, 然后對這個數據進行排序使左邊的數據小于
該數據,右邊的大于該數據,然后用遞歸的方法對兩邊的數據進行依次排序。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python
#_*_coding:utf-8_*_
 
def rand(x):
 import random
 if x < 3:
  x = 5
 if x > 1000:
  print "big data"
  return []
 l = range(1, x)
 li = []
 while l:
  r = random.randint(0, len(l)-1)
  li.append(l.pop(r))
 return li
 
def quicksort(l, low, hight):
 key = l[low]
 while low < hight:
  while key <= l[hight] and low < hight:
   hight -= 1
  l[low], l[hight] = l[hight], l[low]
 
  while key >= l[low] and low < hight:
   low += 1
  l[low], l[hight] = l[hight], l[low]
 
 l[hight] = key
 return hight
 
def m_sort(l, low, hight):
 if low >= hgiht:
  return
 
 index = quicksort(l, low, hight)
 m_sort(l, low, index)
 m_sort(l, index+1, hight)
 
def main():
 l = rand(1500)
 m_sort(l, 0, len(l)-1)
 print l
 
if __name__ == '__main__':
 main()

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: www.亚洲天堂 | 亚洲一区 在线播放 | 第一次做m被调教经历 | 狠狠狠地啪香蕉 | 艹b小说| 动漫jk美女被爆羞羞漫画 | 欧美日韩国产一区二区三区伦 | 大伊香蕉在线精品不卡视频 | 人人爱操 | 欧美一区二区三区视视频 | 成人免费观看www视频 | 深夜日韩| 国产自产自拍 | 网红思瑞一区二区三区 | 欧美日韩精品一区二区三区高清视频 | 91香蕉国产在线观看免费永久 | 99精品视频一区在线观看miya | 麻豆视频免费在线播放 | 精品午夜视频 | 禁忌高h | 呜呜别塞了啊抽插 | 四缺一小说 | 草莓香蕉绿巨人丝瓜榴莲18 | 奇米9999| 亚洲欧美日韩在线观看看另类 | 91sao在线看片水片 | 国产探花视频在线观看 | 四虎影院在线免费观看 | 69热精品视频在线看影院 | 糖心vlog视频永久破解版 | 日韩国产欧美成人一区二区影院 | 久久视频在线视频观看天天看视频 | 天天有好逼 | 亚洲精品色婷婷在线影院麻豆 | bl动漫在线观看 | 美女流白浆 | 亚洲精品资源 | 男人扒开女人下身添 | 爱情岛论坛亚洲永久入口口 | 暖暖 免费 高清 日本 在线1 | 久青草国产在视频在线观看 |