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

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

生活随笔

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

python

python 当前时间减一个月_python排序了解一下

發(fā)布時(shí)間:2023/12/10 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 当前时间减一个月_python排序了解一下 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

排序是每個(gè)開發(fā)人員都需要掌握的技能。排序是對(duì)程序本身有一個(gè)全面的理解。不同的排序算法很好地展示了算法設(shè)計(jì)上如何強(qiáng)烈的影響程序的復(fù)雜度、運(yùn)行速度和效率。今天的文章和談?wù)劥蠹叶际煜さ母鞣N排序使用 Python 如何實(shí)現(xiàn),廢話就不多說(shuō)啦,開干!

選擇排序

選擇排序一般是將初始值設(shè)為初始值,再循環(huán)后面每個(gè)元素與第一個(gè)元素比較,最終篩選出一個(gè)最小或最大值,最后將有序的數(shù)值排在前面,每次選擇當(dāng)前序列的最小值,將其與當(dāng)前序列的第一個(gè)元素交換位置,每迭代一次,當(dāng)前序列長(zhǎng)度減一。迭代結(jié)束,即可得到有序序列。實(shí)現(xiàn)代碼如下:

def select_s(data):# 第一層循環(huán):取出數(shù)組中的每個(gè)元素for i in range(len(data)):temp = i # 拿取一個(gè)元素用來(lái)比較# 第二層循環(huán):從第i后面的一個(gè)值開始循環(huán),與data[i]進(jìn)行比較for j in range(i+1,len(data)):if data[j] < data[temp]:data[temp], data[j] = data[j], data[temp]print(data)

調(diào)用運(yùn)行結(jié)果:

if __name__ == '__main__':data = [14, 31, 14, 6, 18, 24, 2, 40]select_s(data)

輸出結(jié)果:

[2, 6, 14, 14, 18, 24, 31, 40]

插入排序

插入排序的基本操作就是將一個(gè)數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個(gè)新的、個(gè)數(shù)加一的有序數(shù)據(jù),算法適用于少量數(shù)據(jù)的排序,時(shí)間復(fù)雜度為O(n^2)。是穩(wěn)定的排序方法。

插入算法把要排序的數(shù)組分成兩部分:第一部分包含了這個(gè)數(shù)組的所有元素,但將最后一個(gè)元素除外(讓數(shù)組多一個(gè)空間才有插入的位置),而第二部分就只包含這一個(gè)元素(即待插入元素)。在第一部分排序完成后,再將這個(gè)最后元素插入到已排好序的第一部分中。

插入排序思路

實(shí)現(xiàn)代碼如下:

def insert_s(data):# 第一層循環(huán): 從第二個(gè)元素開始循環(huán)取出元素,取出的元素再與有序區(qū)元素進(jìn)行比較for i in range(1,len(data)):temp = data[i]j = i-1while j>=0 and temp < data[j]:data[j+1] = data[j] j = j-1 # 在與前面一個(gè)元素進(jìn)行比較,所以j 需要減1# 當(dāng)j = -1 就跳出循環(huán),將temp值賦給第一個(gè)值,即data[0]data[j+1] = tempprint(data)

調(diào)用運(yùn)行結(jié)果:

if __name__ == '__main__':data = [12, 3, 13, 56, 10, 22, 2, 40]insert_s(data)

輸出結(jié)果:

[2, 3, 10, 12, 13, 22, 40, 56]

冒泡排序

冒泡排序(順序形式),從左向右,兩兩比較,如果左邊元素大于右邊,就交換兩個(gè)元素的位置。

其中,每一輪排序,序列中最大的元素浮動(dòng)到最右面。也就是說(shuō),每一輪排序,至少確保有一個(gè)元素在正確的位置。

這樣接下來(lái)的循環(huán),就不需要考慮已經(jīng)排好序的元素了,每次內(nèi)層循環(huán)次數(shù)都會(huì)減一。

其中,如果有一輪循環(huán)之后,次序并沒(méi)有交換,這時(shí)我們就可以停止循環(huán),得到我們想要的有序序列了。

冒泡排序思路def insert_s(data):# 第一層循環(huán): 從第二個(gè)元素開始循環(huán)取出元素,取出的元素再與有序區(qū)元素進(jìn)行比較for i in range(1,len(data)):temp = data[i]j = i-1while j>=0 and temp < data[j]:data[j+1] = data[j] j = j-1 # 在與前面一個(gè)元素進(jìn)行比較,所以j 需要減1# 當(dāng)j = -1 就跳出循環(huán),將temp值賦給第一個(gè)值,即data[0]data[j+1] = tempprint(data)

調(diào)用運(yùn)行結(jié)果:

if __name__ == '__main__':data = [12, 3, 13, 56, 10, 22, 2, 40]insert_s(data)

輸出結(jié)果:

[2, 3, 10, 12, 13, 22, 40, 56]

快速排序

首先要打亂序列順序,以防算法陷入最壞時(shí)間復(fù)雜度。所以快速排序使用 “分而治之” 的方法。

對(duì)于一串序列,首先從中選取一個(gè)數(shù),凡是小于這個(gè)數(shù)的值就被放在左邊,凡是大于這個(gè)數(shù)的值就被放在右邊。然后,繼續(xù)對(duì)左右兩摞進(jìn)行快速排序。

直到進(jìn)行快速排序的序列長(zhǎng)度小于 2 (即序列中只有一個(gè)值或者空值)。

快速排序思路

代碼如下:

# 快速排序 def partition(data, left, right):temp = data[left]while left < right:# 如果最右邊的值大于中間值,則最右邊值往后退一個(gè)位置,反之,就將值賦值給最左邊位置while left < right and data[right] >= temp:right = right - 1data[left] = data[right]# 如果最左邊的值小于中間值,則最左邊值往前進(jìn)一個(gè)位置,反之,就將值賦值給最右邊位置while left < right and data[left] <= temp:left = left + 1data[right] = data[left]# 循環(huán)結(jié)束,即可定位到中間位置,將初始值,賦值到這個(gè)位置data[left] = tempreturn leftdef quick_sort(data, left, right):if left < right:mid = partition(data, left, right)quick_sort(data, left, mid)quick_sort(data, mid + 1, right)

總結(jié)

今天的文章主要是使用 Python 實(shí)現(xiàn)各大排序程序,以及排序算法實(shí)現(xiàn)思路的梳理,自己學(xué)習(xí)的同時(shí)給大家整理思路!

The End

OK,今天的內(nèi)容就到這里,如果覺(jué)得內(nèi)容對(duì)你有所幫助,歡迎點(diǎn)贊轉(zhuǎn)發(fā)。
如果覺(jué)得不錯(cuò),希望能動(dòng)動(dòng)手指轉(zhuǎn)發(fā)給你身邊的朋友們。

總結(jié)

以上是生活随笔為你收集整理的python 当前时间减一个月_python排序了解一下的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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