最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例

 更新時間:2016年02月16日 17:30:40   作者:明天以后  
這篇文章主要介紹了Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下

一、快速排序

    快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個排序過程可以遞歸進(jìn)行,以此達(dá)到整個數(shù)據(jù)變成有序序列。

    快速排序,遞歸實現(xiàn)

def quick_sort(num_list):
  """
  快速排序
  """
  if num_list == []:
    return num_list
  smallList = []
  bigList = []
  middleElement = num_list[0]
  for i in num_list[1:]:
    if i <= middleElement:
      smallList.append(i)
    else:
      bigList.append(i)
  return quick_sort(smallList)+[middleElement]+quick_sort(bigList)


二、插入排序

    插入排序(Insertion Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。插入排序在實現(xiàn)上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。

    插入排序

def insert_sort(num_list):
  """
  插入排序
  """
  for i in range(len(num_list)-1):
    for j in range(i+1, len(num_list)):
      if num_list[i]>num_list[j]:
        num_list[i],num_list[j] = num_list[j],num_list[i]
  return num_list


三、自定義排序
利用 sort() 或 sorted() 的 key 即可實現(xiàn)。

    示例如下:

def sort_key(obj):
  sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
  return sorted_list.index(obj)
 
 
if __name__ == '__main__':
  print sorted(range(10), key=sort_key)
 
# 輸出結(jié)果如下
[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]

 
# 利用關(guān)鍵字在列表中的索引位置,進(jìn)行自定義排序

相關(guān)文章

  • 使用Python實現(xiàn)圖像顏色量化的方法

    使用Python實現(xiàn)圖像顏色量化的方法

    這篇文章主要介紹了使用Python進(jìn)行圖像顏色量化,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • python如何讀取.mtx文件

    python如何讀取.mtx文件

    這篇文章主要介紹了python讀取.mtx文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解Python操作RabbitMQ服務(wù)器消息隊列的遠(yuǎn)程結(jié)果返回

    詳解Python操作RabbitMQ服務(wù)器消息隊列的遠(yuǎn)程結(jié)果返回

    RabbitMQ是一款基于MQ的服務(wù)器,Python可以通過Pika庫來進(jìn)行程序操控,這里我們將來詳解Python操作RabbitMQ服務(wù)器消息隊列的遠(yuǎn)程結(jié)果返回:
    2016-06-06
  • 在Python 3中緩存Exception對象會造成什么后果?

    在Python 3中緩存Exception對象會造成什么后果?

    這篇文章主要介紹了在Python 3中緩存Exception對象到底會造成什么后果?下面帶著這個問題一起看看文章的解析,需要的朋友可以參考一下
    2021-12-12
  • 詳解Python中如何構(gòu)建全局字典

    詳解Python中如何構(gòu)建全局字典

    全局字典作為一種特殊的全局變量,可以存儲各種類型的數(shù)據(jù),包括字符串、數(shù)字、列表、元組等,本文將詳細(xì)介紹如何在Python中構(gòu)建和使用全局字典,需要的可以參考下
    2024-12-12
  • Python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度

    Python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度

    這篇文章主要介紹了Python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python Web靜態(tài)服務(wù)器非堵塞模式實現(xiàn)方法示例

    Python Web靜態(tài)服務(wù)器非堵塞模式實現(xiàn)方法示例

    這篇文章主要介紹了Python Web靜態(tài)服務(wù)器非堵塞模式實現(xiàn)方法,結(jié)合實例形式分析了Python單進(jìn)程非堵塞模式實現(xiàn)的Web靜態(tài)服務(wù)器相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Python實現(xiàn)銀行賬戶資金交易管理系統(tǒng)

    Python實現(xiàn)銀行賬戶資金交易管理系統(tǒng)

    這篇文章主要介紹了Python銀行賬戶資金交易管理系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python中字典的淺拷貝與深拷貝用法實例分析

    Python中字典的淺拷貝與深拷貝用法實例分析

    這篇文章主要介紹了Python中字典的淺拷貝與深拷貝用法,結(jié)合實例形式分析了字典淺拷貝與深拷貝的原理、區(qū)別與使用方法,需要的朋友可以參考下
    2018-01-01
  • python?nonlocal的用法詳解

    python?nonlocal的用法詳解

    這篇文章主要給大家介紹了關(guān)于python?nonlocal用法的相關(guān)資料,最近在python學(xué)習(xí)中遇到了nonlocal關(guān)鍵字但是感到困惑,于是記錄nonlocal關(guān)鍵字用法,需要的朋友可以參考下
    2023-10-10

最新評論

宣武区| 淄博市| 滦平县| 芷江| 大同市| 自治县| 灵山县| 兰考县| 鹤壁市| 乌审旗| 肇庆市| 东至县| 巴林左旗| 会宁县| 宁蒗| 新安县| 衡山县| 蓬安县| 巢湖市| 常宁市| 广宁县| 宜兴市| 金湖县| 长泰县| 中江县| 惠州市| 五台县| 察哈| 秦皇岛市| 商水县| 兰西县| 博兴县| 山阴县| 洛浦县| 青田县| 永济市| 从江县| 浠水县| 凤翔县| 蓬莱市| 福清市|