国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

帶你掌握四種 Python 排序算法

開發(fā) 后端 算法
在這篇文章中,我們將使用排序算法分類器對我們的數(shù)組進行排序,了解它們是如何工作的。為了保障本文的可讀性,這里只著重介紹4個排序算法。

 

在編程里,排序是一個重要算法,它可以幫助我們更快、更容易地定位數(shù)據(jù)。在這篇文章中,我們將使用排序算法分類器對我們的數(shù)組進行排序,了解它們是如何工作的。為了保障本文的可讀性,這里只著重介紹4個排序算法。

  • 冒泡排序
  • 插入排序.
  • 歸并排序.
  • 快速排序

冒泡排序

冒泡排序是一種簡單的排序算法,它比較兩個相鄰對象的順序,將非預期順序的相鄰對象位置交換。下面是它的工作步驟:

  • 比較第一個和第二個對象,如果第一個大于第二個,將之交換。
  • 將第二個對象和第三個對象進行比較,檢查相同條件。以此類推直到比較到數(shù)組最后一個數(shù)。
  • 重復執(zhí)行這個過程,這樣數(shù)組就按照從左到右從小到大排列了。
代碼如下
  1. # Python中的冒泡排序 
  2. def bubbleSort(array): 
  3.   
  4.   # 外循環(huán)訪問數(shù)組的每個元素 
  5.   for i in range(len(array)): 
  6.  
  7.     # 內(nèi)循環(huán)將數(shù)組元素與外循環(huán)迭代元素進行比較 
  8.     for j in range(0, len(array) - i - 1): 
  9.  
  10.       # 比較兩個相鄰元素 
  11.       if array[j] > array[j + 1]: 
  12.  
  13.         # 如果元素不是預期順序則交換元素 
  14.         temp = array[j] 
  15.         array[j] = array[j+1
  16.         array[j+1] = temp 
  17. data = [54321
  18.  
  19. bubbleSort(data) 
  20. print('Sorted Array'
  21. print(data) 
  22.  
  23. #output: [12345

插入排序

插入排序也很簡單,它分為已經(jīng)排序和未排序兩部分,將未排序部分的元素選中后正確放置在排序部分即可。類似卡牌游戲時我們手里有分類卡。下面是它的工作步驟:

  • 遍歷數(shù)組查找最低元素的索引并將其與數(shù)組的第一個元素交換。
  • 找到數(shù)組(不包括第一個元素)中另一個最低的元素,并將其與第二個元素交換 ,然后重復操作,直到數(shù)組的最后一個元素。
  • 這樣,數(shù)組中最低的元素都會移到左邊,而最大的元素會在數(shù)組的右邊,因此數(shù)組是有序的。

代碼如下:

  1. # Python中的排序算法 
  2. def insertionSort(array): 
  3.     for step in range(1, len(array)): 
  4.         key = array[step] 
  5.         j = step - 1 
  6.         # 將鍵與其左側的每個元素進行比較,直到找到小于它的元素 
  7.         while j >= 0 and key < array[j]: 
  8.             array[j + 1] = array[j] 
  9.             j = j - 1 
  10.         # 將鍵放在比它小的元素之后。 
  11.         array[j + 1] = key 
  12.  
  13. data = [1143212
  14.  
  15. insertionSort(data) 
  16. print("sorted array"
  17. print(data) 
  18.  
  19. #output: [2341112

歸并排序

歸并排序是基于分治算法原理的最常用的排序算法。我們將數(shù)組分為多個部分,然后對他們進行排序,最后將子部分合并為一個排序數(shù)組,為了更好的理解,下面是它的工作步驟:

  • 把數(shù)組分成小塊,直到每一塊中沒有單獨的元素。
  • 比較每一塊數(shù)組,將最小值放在左側,最大值放在數(shù)組的右側。
  • 如果覺得很難理解,看看這個動圖。

代碼如下:

  1. # Python的歸并排序 
  2. def mergeSort(array): 
  3.     if len(array) > 1
  4.  
  5.         #  r 是將數(shù)組分為兩半后的分割點 
  6.         r = len(array)//2 
  7.         L = array[:r] 
  8.         M = array[r:] 
  9.  
  10.         # 通過遞歸方法對兩半進行排序 
  11.         mergeSort(L) 
  12.         mergeSort(M) 
  13.  
  14.         i = j = k = 0 
  15.  
  16.         # 直到我們到達 L 或 M 的任一端,從中選擇較大的元素 L 和 M 并將它們放置在 A[p 到 r] 處的正確位置 
  17.         while i < len(L) and j < len(M): 
  18.             if L[i] < M[j]: 
  19.                 array[k] = L[i] 
  20.                 i += 1 
  21.             else
  22.                 array[k] = M[j] 
  23.                 j += 1 
  24.             k += 1 
  25.  
  26.         # 將L或者M里的元素排序好后,將剩余的元素并放入 A[p to r] 
  27.         while i < len(L): 
  28.             array[k] = L[i] 
  29.             i += 1 
  30.             k += 1 
  31.  
  32.         while j < len(M): 
  33.             array[k] = M[j] 
  34.             j += 1 
  35.             k += 1 
  36. array = [861412103
  37.  
  38. mergeSort(array) 
  39. print("Sorted array: "
  40. print(array) 
  41.  
  42. #output: [368101214

快速排序

與歸并排序一樣,快速排序也是基于分治算法的原理的一種排序算法。它選擇一個元素作為樞軸,并圍繞樞軸分區(qū)數(shù)組。下面是它的工作步驟:

  • 選擇一個轉折點,這可以是隨機選擇的。這里假設我們選擇數(shù)組的最后一個元素作為軸心。
  • 將所有小于軸心的項目放在左側,大于軸心的項目放在數(shù)組右側。
  • 在樞軸的左右兩側重復上面的步驟。
  1. # Python中的快速排序 
  2. # 找到分區(qū)位置 
  3. def partition(array, lowest, highest): 
  4.  
  5.   # 這里我們選擇最右的元素作為樞軸 
  6.   pivot = array[highest] 
  7.  
  8.   # 為最大的元素設置指針 
  9.   i = lowest - 1 
  10.   # 將每個元素與樞軸元素對比 
  11.   for j in range(lowest, highest): 
  12.     if array[j] <= pivot: 
  13.       i = i + 1 
  14.       # 將 i 處的元素與 j 處的元素交換 
  15.       (array[i], array[j]) = (array[j], array[i]) 
  16.  
  17.   # 將樞軸元素與 i 指定的較大元素交換 
  18.   (array[i + 1], array[highest]) = (array[highest], array[i + 1]) 
  19.  
  20.   # 返回分區(qū)完成的位置 
  21.   return i + 1 
  22. def quickSort(array, lowest, highest): 
  23.   if lowest < highest: 
  24.  
  25.      # 找到樞軸元素 
  26.      # 小于樞軸的元素放左邊 
  27.      # 大于樞軸的元素放右邊 
  28.     pi = partition(array, lowest, highest) 
  29.  
  30.     # 樞軸左側的遞歸調(diào)用 
  31.     quickSort(array, lowest, pi - 1
  32.  
  33.     # 樞軸右側的遞歸調(diào)用 
  34.     quickSort(array, pi + 1, highest) 
  35. array = [98321107619
  36.  
  37. size = len(array) 
  38. quickSort(array, 0, size - 1
  39. print('Sorted Array is below'
  40. print(array) 
  41.  
  42. #output [12367891019

 

 

責任編輯:張燕妮 來源: 華為云社區(qū)
相關推薦

2023-11-15 07:40:40

2009-09-08 17:20:01

C#排序算法

2015-03-19 15:13:20

PHP基本排序算法代碼實現(xiàn)

2023-10-21 21:13:00

索引SQL工具

2021-08-11 20:17:22

推薦算法系統(tǒng)

2024-02-28 09:22:03

限流算法數(shù)量

2011-12-30 13:15:53

Java

2024-10-24 08:04:00

2023-07-11 10:24:00

分布式限流算法

2021-10-24 08:37:18

網(wǎng)絡監(jiān)控網(wǎng)絡架構網(wǎng)絡

2013-03-06 10:07:59

VDI管理

2013-10-17 09:25:52

2010-08-05 13:44:12

Flex布局

2023-11-27 13:42:00

消息隊列RocketMQ

2011-11-24 16:34:39

Java

2022-08-01 07:56:23

React Hook開發(fā)組件

2013-07-29 10:10:40

TCP協(xié)議TCP定時器TCP

2011-03-16 09:05:53

NATiptables

2012-09-11 09:55:26

編程HTML5編程能力

2014-12-25 09:41:15

Android加載方式
點贊
收藏

51CTO技術棧公眾號

亚洲欧美日韩一区在线| 国产91露脸合集magnet| 精品国产一区二区三区av性色| 免费无码av片在线观看| 蜜桃精品视频在线| 99久久久久国产精品免费| 欧美黄色影院| 在线免费看av不卡| 午夜伦理大片视频在线观看| 性欧美大战久久久久久久久| 久久精品影视大全| www.亚洲精品| 欧美国产日韩激情| 免费不卡在线观看| 亚洲国产高清不卡| www..com日韩| 国产精品一区二区久久精品爱涩| 欧美一区2区三区4区公司二百| 亚洲一级淫片| 国产精品香蕉av| 久久免费视频66| 国内外成人免费激情在线视频| 亚洲三级欧美| 亚洲色图综合久久| 嫩草伊人久久精品少妇av杨幂| 亚洲第一视频网站| 大菠萝精品导航| 亚洲欧美国产日韩天堂区| 日韩精品专区| 亚洲网址你懂得| 国产一区一区| 日韩美女在线看| 日韩欧美高清在线播放| 亚洲综合中文字幕68页| 一区二区中文| av在线免费观看网站| 欧美激情综合| 欧美日韩亚洲激情| 成人黄色大片网站| 久久久亚洲一区| 久久精品夜夜夜夜久久| www.亚洲成人| 日韩成人av电影在线| 成人免费一区二区三区视频网站| 亚洲精品在线播放| 97在线视频一区| 青青久久精品| 亚洲欧美国产高清va在线播| 成人黄色图片网站| 精品亚洲va在线va天堂资源站| 日韩理论视频| 久久99精品国产99久久6尤物| 国产精品17p| 国产精品永久免费观看| 欧美精品成人| 日韩欧美一区二区视频在线播放| 久久99精品久久久久久动态图| 搞av.com| 亚洲成人1区2区| 波多野结衣中文字幕久久| 日韩中文字幕视频| 亚洲成人一品| 国产精品美女黄网| 欧美日韩国产三级| 亚洲黄色网址在线观看| 日韩一级二级| 国产一区二区三区小说| 在线精品视频一区二区| 成人免费性视频| 国产精品国产三级国产a| 免费国产在线视频| 亚洲人成亚洲人成在线观看| 美女一区二区在线观看| 好吊色欧美一区二区三区四区| 国产精品77777| 一本到av在线| 中文字幕亚洲精品| 国产精品magnet| 欧美成人免费高清视频| 色天天综合色天天久久| 成人免费av电影| 91色视频在线导航| av电影一区二区| 在线免费av电影| 欧美激情视频在线| 视频在线观看91| xvideos国产精品| 欧美在线影院| www.日日操| 精品国产一区二区三区不卡| 免费看成人哺乳视频网站| 欧洲高清一区二区| 亚洲国产婷婷综合在线精品| 欧美日韩视频免费| 成人精品国产一区二区4080| 午夜精品短视频| 精品亚洲porn| 台湾十八成人网| 日韩大片免费观看视频播放| 国产亚洲一区二区手机在线观看| 久久久久久久久99精品| 91精品国产综合久久久久久豆腐| 欧美成人午夜视频| 国产自产v一区二区三区c| 欧美精品久久久久久久久久丰满| 久久99久久99精品免观看粉嫩| 毛片一区二区三区| √新版天堂资源在线资源| 国产ts人妖一区二区三区| 成人晚上爱看视频| 久久av色综合| 国产三区精品| 色综合天天综合网天天看片| 亚洲精品自拍| 麻豆中文字幕在线观看| 91久久精品一区二区| 精品久久久久久久久久久aⅴ| 播放灌醉水嫩大学生国内精品| 亚洲第一区第二区| 久久婷婷亚洲| 免费av毛片在线看| 91传媒视频在线观看| 亚洲欧美综合另类在线卡通| 欧美精品三级在线| 波多野结衣家庭教师视频| 国产一区二区三区丝袜| 激情综合网最新| 男人添女人下部高潮视频在线观看| 电影午夜精品一区二区三区| 亚洲综合免费观看高清完整版 | 亚洲一二av| 日韩视频第二页| 日韩中文字幕久久| 豆国产96在线|亚洲| 日韩伦理福利| 成年人三级视频| 亚洲精品一区二区在线| 国产精一区二区三区| 粉嫩一区二区三区| 秋霞无码一区二区| 欧美富婆性猛交| 中文字幕一区二区三区av| 在线日韩网站| 欧美日韩视频精品二区| 国产伦一区二区三区色一情| 欧美撒尿777hd撒尿| 亚洲一区二区毛片| 白白色在线观看| 国产一级片91| 日韩av在线高清| 精品国精品自拍自在线| 狠狠久久综合| 久久久国产视频91| 国产精品高清在线| 欧美zozo另类异族| 成人线上视频| 少妇高潮喷水在线观看| 亚洲片av在线| 久久免费视频一区| 日韩精品欧美在线| 亚洲精品美女网站| 91免费看视频| 竹菊久久久久久久| 91最新在线| 丰满人妻一区二区三区53号| 久久色免费在线视频| 亚洲女厕所小便bbb| 欧美成人嫩草网站| 91超碰在线免费| 日韩欧美精品在线观看视频| 91精品91久久久久久| 午夜精品福利久久久| 中文亚洲免费| 成人国产精品入口免费视频| 成人免费视频77777| 国产乱码精品一区二区三区中文| 日韩电视剧免费观看网站| 国产日韩视频一区二区三区| 色婷婷亚洲mv天堂mv在影片| 超鹏97在线| 亚洲精品无码久久久久久| 国产福利视频一区| 精品国产一区二区三区不卡| 久久九九全国免费| 欧美体内she精视频在线观看| 中文在线免费视频| 日本视频一二区| 欧美精品一区在线| 97视频在线观看视频免费视频| 欧美揉bbbbb揉bbbbb| 91香蕉视频黄| 国产精品vip| 亚洲一区二区三区久久久| 青青草视频免费在线观看| 香蕉精品视频在线| 国产精品视频久| 亚洲跨种族黑人xxx| 五月天欧美精品| 99久久久国产精品免费蜜臀| 午夜视频精品|