欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中都有哪些排序算法

今天就跟大家聊聊有關(guān)Python中都有哪些排序算法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司于2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元日照做網(wǎng)站,已為上家服務(wù),為日照各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575


1.冒泡排序

冒泡排序是 CS  入門(mén)課程中最常講授的一種,因?yàn)樗宄卣f(shuō)明了排序的工作原理,同時(shí)又簡(jiǎn)單又易于理解。冒泡排序?qū)⒅鸩奖闅v列表并比較相鄰的元素對(duì)。如果元素的順序錯(cuò)誤,則會(huì)交換這些元素。重復(fù)對(duì)列表中未排序部分的遍歷,直到對(duì)列表進(jìn)行排序。因?yàn)槊芭菖判蛑貜?fù)地通過(guò)列表中未排序的部分,所以它的最壞情況復(fù)雜性為O(n²)。

Python中都有哪些排序算法
def bubble_sort(arr):     def swap(i, j):         arr[i], arr[j] = arr[j], arr[i]      n = len(arr)     swapped = True          x = -1     while swapped:         swapped = False         x = x + 1         for i in range(1, n-x):             if arr[i - 1] > arr[i]:                 swap(i - 1, i)                 swapped = True                          return arr

2.選擇排序

選擇排序也相當(dāng)簡(jiǎn)單,優(yōu)于冒泡排序。如果你要在這兩者之間進(jìn)行選擇,那么最好使用默認(rèn)的“右選擇排序”。使用選擇排序,我們將輸入列表/數(shù)組分為兩部分:已排序項(xiàng)的子列表和構(gòu)成列表其余部分的剩余項(xiàng)的子列表。

我們首先在未排序的子列表中找到最小的元素,并將其放在已排序子列表的末尾。因此,我們不斷地獲取最小的未排序元素,并將其按排序順序放入已排序的子列表中。此過(guò)程將重復(fù)進(jìn)行,直到列表完全排序。

Python中都有哪些排序算法
def selection_sort(arr):             for i in range(len(arr)):         minimum = i                  for j in range(i + 1, len(arr)):             # 選擇最小值             if arr[j] < arr[minimum]:                 minimum = j          # 把它放在已排序的數(shù)組結(jié)尾         arr[minimum], arr[i] = arr[i], arr[minimum]                  return arr

3.插入排序

插入排序比冒泡排序和選擇排序都要快,而且可以說(shuō)更加簡(jiǎn)單。就像在玩紙牌游戲時(shí),洗牌的過(guò)程就是反復(fù)進(jìn)行插入排序!在每次循環(huán)迭代中,插入排序從數(shù)組中刪除一個(gè)元素。然后在另一個(gè)排序數(shù)組中查找該元素所屬的位置,并將其插入其中。它重復(fù)這個(gè)過(guò)程,直到?jīng)]有輸入元素保留。

Python中都有哪些排序算法
def insertion_sort(arr):              for i in range(len(arr)):         cursor = arr[i]         pos = i                  while pos > 0 and arr[pos - 1] > cursor:             # 交換列表中的數(shù)字             arr[pos] = arr[pos - 1]             pos = pos - 1         # 中斷并進(jìn)行最終交換         arr[pos] = cursor      return arr

4.合并排序

合并排序是一個(gè)完美的分而治之的算法例子。使用這種算法只需要通過(guò)以下兩個(gè)主要步驟:

(1) 連續(xù)分割未排序的列表,直到有N個(gè)子列表,其中每個(gè)子列表都有1個(gè)“未排序”的元素,N是原始數(shù)組中的元素?cái)?shù)。

(2) 反復(fù)合并,即一次將兩個(gè)子列表合并在一起,生成新的已排序子列表,直到所有元素都完全合并到一個(gè)已排序的數(shù)組中。

Python中都有哪些排序算法
def merge_sort(arr):     # 對(duì)最后一個(gè)數(shù)組進(jìn)行拆分     if len(arr) <= 1:         return arr     mid = len(arr) // 2     # 在兩個(gè)部分上遞歸執(zhí)行merge_sort     left, right = merge_sort(arr[:mid]), merge_sort(arr[mid:])      # 合并在一起     return merge(left, right, arr.copy())   def merge(left, right, merged):      left_cursor, right_cursor = 0, 0     while left_cursor < len(left) and right_cursor < len(right):                # 將每一個(gè)排序并放入結(jié)果         if left[left_cursor] <= right[right_cursor]:             merged[left_cursor+right_cursor]=left[left_cursor]             left_cursor += 1         else:             merged[left_cursor + right_cursor] = right[right_cursor]             right_cursor += 1                  for left_cursor in range(left_cursor, len(left)):         merged[left_cursor + right_cursor] = left[left_cursor]              for right_cursor in range(right_cursor, len(right)):         merged[left_cursor + right_cursor] = right[right_cursor]      return merged

5.快速排序

快速排序也是一種分而治之的算法,與合并排序一樣。盡管它有點(diǎn)復(fù)雜,但在大多數(shù)標(biāo)準(zhǔn)實(shí)現(xiàn)中,它的執(zhí)行速度比合并排序快得多,而且很少達(dá)到O(n&sup2;)的最壞情況復(fù)雜度。它有三個(gè)主要步驟:

(1) 我們首先從數(shù)組中選擇一個(gè)元素,稱(chēng)之為pivot。

(2) 將小于軸的所有元素移到軸的左側(cè);將大于軸的所有元素移到軸的右側(cè)。這稱(chēng)為分區(qū)操作。

(3) 遞歸地將上述2個(gè)步驟分別應(yīng)用于元素的每個(gè)子數(shù)組,這些元素的值比上一個(gè)軸的值小或大。

Python中都有哪些排序算法
def partition(array, begin, end):     pivot_idx = begin     for i in xrange(begin+1, end+1):         if array[i] <= array[begin]:             pivot_idx += 1             array[i], array[pivot_idx] = array[pivot_idx], array[i]     array[pivot_idx], array[begin] = array[begin], array[pivot_idx]     return pivot_idx  def quick_sort_recursion(array, begin, end):     if begin >= end:         return     pivot_idx = partition(array, begin, end)     quick_sort_recursion(array, begin, pivot_idx-1)     quick_sort_recursion(array, pivot_idx+1, end)  def quick_sort(array, begin=0, end=None):     if end is None:         end = len(array) - 1          return quick_sort_recursion(array, begin, end)

看完上述內(nèi)容,你們對(duì)Python中都有哪些排序算法有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁(yè)標(biāo)題:Python中都有哪些排序算法
當(dāng)前路徑:http://aaarwkj.com/article38/gghcsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、動(dòng)態(tài)網(wǎng)站、GoogleChatGPT、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
成人色视频免费在线观看| 日本黄色中文字幕在线观看| 精品视频在线观看传媒| 日本欧美三级一二三区| 国产黄片免费看久久久| 末满18周岁禁止观看| 成年人网站一级黄色免费| 成人中文字幕日韩电影| 久久综合激情亚洲欧美专区| 99久久精品费精品国产风间由美| 黄色大片黄色大片黄色大片| 人人人妻人人澡人人爽e| 国产欧美日韩精品久久久久久| av天堂资源地址在线观看| 欧美三级伦理片免费观看| 日本熟女午夜福利视频| 亚洲黄色av电影在线| 中文字幕日韩有码在线| 亚洲天堂av在线观看| 人妻中文字幕日韩av| 91精品国产高清91久久久久久| 九七青青草视频在线观看| 91精品国产高清一区二区性色| 91九色视频官网在线观看| 日韩一区二区免费看视频| 日韩国产亚洲欧美国产| 午夜视频在线观看免费高清国产| 久久精品国产亚洲av麻豆花絮| 亚洲精品影视一区二区| 91嫩草中文字幕在线| 亚洲精品一区二区三区中文字幕| 男女午夜激情四射视频| 后入动漫视频在线观看| 久久精品一偷一偷国产| 日韩精品欧美视频久久| 涩久久悠悠一区二区三区| 可以直接看内射的视频| 亚洲av一本岛在线播放| 国产精品一区二区国产激情久久 | 日本新任女教师在线播放| 亚洲av一本岛在线播放|