日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例

發(fā)布時(shí)間:2024/10/8 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

該方法的基本思想是:

1.先從數(shù)列中取出一個(gè)數(shù)作為基準(zhǔn)數(shù)。

2.分區(qū)過(guò)程,將比這個(gè)數(shù)大的數(shù)全放到它的右邊,小于或等于它的數(shù)全放到它的左邊。

3.再對(duì)左右區(qū)間重復(fù)第二步,直到各區(qū)間只有一個(gè)數(shù)。

現(xiàn)在通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明快排。

比如有一個(gè)數(shù)組:

6 2 4 5 3

第一步:選取一個(gè)基準(zhǔn)數(shù),不要被這個(gè)名詞嚇到了,你可以把它看作是一個(gè)比較大小的數(shù),因?yàn)榕判蚓褪潜容^大小,

比如我選取最后一個(gè)數(shù)3為基準(zhǔn)數(shù),依次把數(shù)組的數(shù)和3比較,比3小的放左邊,比3大的放右邊,這樣有如下結(jié)果:

2 3 6 4 5

第二步:判斷區(qū)間個(gè)數(shù),經(jīng)過(guò)第一步后左邊區(qū)間只有一個(gè)數(shù)了,沒(méi)有數(shù)字再和它比較了,因此不需要重復(fù)操作,右邊區(qū)間還有:

6 4 5

重復(fù)第一步,選取5作為基準(zhǔn)數(shù),得到比較結(jié)果:

4 5 6

這樣左右兩邊區(qū)間都只有一個(gè)數(shù)了,這就標(biāo)志著排序完成,最后把所有區(qū)間合并就得到排序結(jié)果:

2 3 4 5 6

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]

print quick_sort(list)

[1, 2, 2, 4, 6, 7, 8]

相比C、C#、JAVA之類的是不是簡(jiǎn)單多了^.^

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

# -*- 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))

輸出:

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

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

mylist = list(set(L)) #集合自動(dòng)排序字符串

總結(jié)

以上是生活随笔為你收集整理的python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。