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

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

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

服務器之家 - 腳本之家 - Python - Python實現快速排序算法及去重的快速排序的簡單示例

Python實現快速排序算法及去重的快速排序的簡單示例

2020-08-29 11:03j_hao104 Python

quick sort快速排序是一種再基礎不過的排序算法,使用Python代碼寫起來相當簡潔,這里我們就來看一下Python實現快速排序算法及去重的快速排序的簡單示例:

快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經常被采用。

該方法的基本思想是:

1.先從數列中取出一個數作為基準數。

2.分區過程,將比這個數大的數全放到它的右邊,小于或等于它的數全放到它的左邊。

3.再對左右區間重復第二步,直到各區間只有一個數。

現在通過一個實例來說明快排。

比如有一個數組:

?
1
6 2 4 5 3

第一步:選取一個基準數,不要被這個名詞嚇到了,你可以把它看作是一個比較大小的數,因為排序就是比較大小,

比如我選取最后一個數3為基準數,依次把數組的數和3比較,比3小的放左邊,比3大的放右邊,這樣有如下結果:

?
1
2 3 6 4 5

第二步:判斷區間個數,經過第一步后左邊區間只有一個數了,沒有數字再和它比較了,因此不需要重復操作,右邊區間還有:

?
1
6 4 5

重復第一步,選取5作為基準數,得到比較結果:

?
1
4 5 6

這樣左右兩邊區間都只有一個數了,這就標志著排序完成,最后把所有區間合并就得到排序結果:

?
1
2 3 4 5 6
?
1
2
3
4
5
6
7
8
9
10
def quick_sort(array):
  less = []; greater = []
  if len(array) <= 1:
    return array
  pivot = array.pop()
  for x in array:
    if x <= pivot: less.append(x)
    else: greater.append(x)
  return quick_sort(less) + [pivot] + quick_sort(greater)
list = [2,4,2,6,7,8,1]
?
1
print quick_sort(list)
?
1
[1, 2, 2, 4, 6, 7, 8]

相比C、C#、JAVA之類的是不是簡單多了^.^

TIP:去重的快速排序
如下, 只需要把集合修改為單值元素,這里我們使用Python3來演示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-
  
import random
 
L = [2, 3, 8, 4, 9, 5, 6, 5, 6, 10, 17, 11, 2]
 
def qsort(L):
  if len(L)<2: return L
  pivot_element = random.choice(L)
  small = [i for i in L if i< pivot_element]
  #medium = [i for i in L if i==pivot_element]
  large = [i for i in L if i> pivot_element]
  return qsort(small) + [pivot_element] + qsort(large)
 
print(qsort(L))

輸出:

?
1
[2, 3, 4, 5, 6, 8, 9, 10, 11, 17]

也可以直接使用, 集合(set)進行排序和去重.

?
1
mylist = list(set(L)) #集合自動排序字符串

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲好色网 | 亚洲免费视 | 99久久国产综合精品1尤物 | 亚洲男女在线 | ass亚洲熟妇毛茸茸pics | 三级黄色片在线免费观看 | 高清不卡一区 | 男女拍拍拍免费视频网站 | 好吊色永久免费视频大全 | 视频高h| yy111111影院理论大片 | 久久人妻熟女中文字幕AV蜜芽 | 国产二区视频 | 日本精品一卡二卡≡卡四卡 | 午夜国产精品视频 | 成年人天堂 | 亚洲成人三级 | 91久久线看在观草草青青 | 91青青国产在线观看免费 | 男人香蕉好大好爽视频 | 亚洲精品九色在线网站 | 丝瓜草莓香蕉绿巨人幸福宝 | 草久社区| 精品综合一区二区三区 | 被调教的校花 | 成年人在线观看视频免费 | 无码AV精品一区二区三区 | 2012手机在线中文字幕 | 91麻豆国产福利在线观看 | 欧美3p大片在线观看完整版 | 国产香蕉在线视频 | 激情小说色图 | 日本大乳护士的引诱图片 | a级情欲片在线观看hd | 日本伊人久久 | 1986葫芦兄弟全集免费观看第十集 | 暖暖 免费 高清 日本 在线 | 日韩欧美国产免费看清风阁 | chinese男性厕所撒尿合集 | 国产精品毛片久久久久久久 | 男人的天堂视频 |