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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现冒泡排序算法的非递归版本_python排序算法速度比较:快速排序,归并排序,冒泡排序...

發布時間:2025/3/21 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现冒泡排序算法的非递归版本_python排序算法速度比较:快速排序,归并排序,冒泡排序... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

原理就不在這里說了,好多大神肯定比我這個初學者講的好很多,推薦去B站看視頻講解,跟著手敲代碼

為什么選這三個排序呢?

首先快排是必須掌握的

看看快排在最壞的情況下(O(n2)),且不使用輔助空間,與冒泡(O(n2))的比較

由于快排是不穩定的排序算法,且平均時間復雜度為O(nlogn),那找一個時間復雜度為O(nlogn)且穩定排序算法,那么就非歸并排序莫屬了.

一、快速排序,歸并排序,冒泡排序比較

時間復雜度

空間復雜度

穩定性

平均

最好

最壞

冒泡排序

O(n2)

O(n)

O(n2)

O(1)

穩定

O(nlogn)

O(nlogn)

O(n2)

O(1)或O(n)

不穩定

歸并排序

O(nlogn)

O(nlogn)

O(nlogn)

O(n)

穩定

二、源碼

引入庫,并生成1000個隨機數,然后深拷貝若干份.

import random

from copy import deepcopy

arr0 = [random.randint(1, 100) for _ in range(1000)]

# arr0 = [_ for _ in range(1000, 0, -1)]

# print(arr0)

for i in range(1, 11):

exec(f'arr{i} = deepcopy(arr0)')

1.冒泡

def bubble_sort(arr):

for i in range(len(arr) - 1):

for j in range(len(arr) - 1 - i):

if arr[j] >= arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

return arr

2.歸并

def merge_sort(arr):

length = len(arr)

if length <= 1:

return arr

mid = length // 2

# 以下標mid為分界點,將arr的[:mid]給left,[mid:]給right

left = merge_sort(arr[:mid])

right = merge_sort(arr[mid:])

lp = 0

rp = 0

res = []

while lp < len(left) and rp < len(right):

if left[lp] <= right[rp]:

res.append(left[lp])

lp += 1

else:

res.append(right[rp])

rp += 1

# 這里要用extend. left,right切片后的值為一個list

res.extend(left[lp:])

res.extend(right[rp:])

return res

3.快排

# 一句話快排

qs = lambda arr: arr if len(arr) <= 1 else qs([it for it in arr[1:] if it <= arr[0]]) + [arr[0]] +

qs([it for it in arr[1:] if it > arr[0]])

# 空間復雜度O(1)的快排

def quick_sort_O1(arr, left, right):

if left >= right:

return

base = arr[left]

lp = left

rp = right

while lp < rp:

while lp < rp and arr[rp] >= base:

rp -= 1

arr[lp] = arr[rp]

while lp < rp and arr[lp] < base:

lp += 1

arr[rp] = arr[lp]

arr[lp] = base

quick_sort_O1(arr, left, lp - 1)

quick_sort_O1(arr, lp + 1, right)

return arr

# 空間復雜度O(n)的快排

def quick_sort_On(arr: list):

if len(arr) <= 1:

return arr

left = []

right = []

base = arr.pop(0)

for it in arr:

if it <= base:

left.append(it)

else:

right.append(it)

return quick_sort_On(left) + [base] + quick_sort_On(right)

# 空間復雜度O(n)的快排,引入隨機處理,嘗試規避快排的最壞風險

def quick_sort_On_random(arr: list):

if len(arr) <= 1:

return arr

left = []

right = []

base = arr.pop()

while arr:

tmp = arr.pop()

if tmp <= base:

left.append(tmp)

else:

right.append(tmp)

return quick_sort_On(left) + [base] + quick_sort_On(right)

三、創建長度為1000的list,在jupyter?notebook上運行,觀察結果

1.隨機無序數組結果

空間換時間的做法明顯讓快排效率提高了一個數量級~

2.反序數組結果

將arr0重新賦值如下:

arr0 = [_ for _ in range(1000, 0, -1)]

3.正序數組結果

將arr0重新賦值如下:

arr0 = [_ for _ in range(1000)]

4.內置函數–遙遙領先

**內置函數那么快,學啥快排(捂臉)…

隨機無序數組

反序數組

正序結果

總結

先不總結了,大致情況就如上吧.希望大家看完后給些意見和建議.

不知道有什么地方沒考慮進去,本來只是為了規避快排最壞情況的風險而實現的quick_sort_On_random,意外發現每次都是最快的???

總結

以上是生活随笔為你收集整理的python实现冒泡排序算法的非递归版本_python排序算法速度比较:快速排序,归并排序,冒泡排序...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久青草影视 | 国产九色sp调教91 | 国产在线国偷精品免费看 | 天堂www中文在线资源 | 懂色av中文字幕 | 97超碰人| 免费污视频在线观看 | 极品少妇视频 | 日韩久久久精品 | 久艹在线观看视频 | 1024视频污| 久久精品一级片 | 台湾av在线播放 | 免费一级黄 | 诱人的乳峰奶水hd | 国产婷婷综合 | 全黄性性激高免费视频 | 18pao国产成视频永久免费 | 深夜福利国产 | 国产欧美一区二区三区在线看 | 中文字幕日韩欧美在线 | 国产一区二区三区免费在线观看 | 日韩毛片在线免费观看 | 骚鸭av| av男人的天堂在线 | 久久免费观看视频 | 91网在线播放 | 成人影片在线免费观看 | 欧美一级片| 日产亚洲一区二区三区 | 亚洲一区二区色 | 97久久国产精品 | 麻豆av免费在线观看 | 好吊色青青草 | 妓院一钑片免看黄大片 | 网站免费视频www | 欧美爽爽爽 | 国产精品情侣呻吟对白视频 | 日本伦理一区二区三区 | 被绑在床强摁做开腿呻吟 | 激情影音| 人妖天堂狠狠ts人妖天堂狠狠 | 中文字幕欲求不满 | 亚洲欧洲日本一区二区三区 | 日韩欧美一区二区在线观看 | 91毛片观看| 林天顾悦瑶笔趣阁 | 日韩一级色 | 97日韩精品 | 国产免费一级 | 九九九精品视频 | 亚洲福利电影 | 国产第十页 | 黄色一几片 | 亚洲国产成人精品一区二区三区 | 欧美日韩在线观看免费 | 日韩在线播放一区二区 | 成人性生交大片免费 | 日日骚视频 | 国产极品福利 | 色屁屁www | 亚洲视频不卡 | av在线不卡网 | 久久精精品久久久久噜噜 | 欧美最猛性xxxxx(亚洲精品) | 99中文字幕在线观看 | 日本欧美三级 | 男人天堂最新网址 | 亚洲成人自拍 | 黄色三级网 | www.久热| 91成人短视频在线观看 | 91精品亚洲一区 | 成人在线高清视频 | 国产成人综合在线观看 | 国产簧片 | 精品夜夜澡人妻无码av | 日韩欧美精品在线视频 | 黄色网址av | 麻豆视频网页 | 久久久久亚洲av无码a片 | 国产高清视频免费在线观看 | japanese24hdxxxx日韩| 99爱免费视频 | 国产偷国产偷av亚洲清高 | 黑人添美女bbb添高潮了 | av毛片在线免费看 | 男生操女生网站 | 亚洲精品国产成人久久av盗摄 | 国产a√精品区二区三区四区 | 成人免费看片39 | 中文字幕精品在线观看 | 爱爱免费小视频 | 影院色原网站 | 91av一区| 久久爱伊人 | 九九热在线精品 | 亚洲精品91在线 | 少妇性l交大片免潘金莲 |