欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、快速排序

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

    快速排序,遞歸實(shí)現(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)位置并插入。插入排序在實(shí)現(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 即可實(shí)現(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編寫一個GUI倒計(jì)時器

    python編寫一個GUI倒計(jì)時器

    這篇文章主要為大家詳細(xì)介紹了python編寫一個GUI倒計(jì)時器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • python進(jìn)程管理工具supervisor的安裝與使用教程

    python進(jìn)程管理工具supervisor的安裝與使用教程

    supervisor是用python寫的一個進(jìn)程管理工具,用來啟動,重啟,關(guān)閉進(jìn)程。下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)的進(jìn)程管理工具supervisor的安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Python實(shí)現(xiàn)的檢測web服務(wù)器健康狀況的小程序

    Python實(shí)現(xiàn)的檢測web服務(wù)器健康狀況的小程序

    這篇文章主要介紹了Python實(shí)現(xiàn)的檢測web服務(wù)器健康狀況的小程序,本文使用socket庫來實(shí)現(xiàn),需要的朋友可以參考下
    2014-09-09
  • Python的三種主要模塊介紹

    Python的三種主要模塊介紹

    這篇文章介紹了Python的三類主要模塊,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python中scatter函數(shù)參數(shù)及用法詳解

    Python中scatter函數(shù)參數(shù)及用法詳解

    這篇文章主要介紹了Python中scatter函數(shù)參數(shù)及用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python批量啟動多線程代碼實(shí)例

    Python批量啟動多線程代碼實(shí)例

    這篇文章主要介紹了python批量啟動多線程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python安裝Pytorch最新圖文教程

    Python安裝Pytorch最新圖文教程

    這篇文章主要介紹了Python安裝Pytorch最新圖文教程,這里總結(jié)一下Pytorch的安裝教程,做好最快、最簡單、最好地完成安裝,需要的朋友可以參考下
    2023-04-04
  • python編程培訓(xùn) python培訓(xùn)靠譜嗎

    python編程培訓(xùn) python培訓(xùn)靠譜嗎

    現(xiàn)在大家都知道,比較火的編程語言就是python了,很多朋友都想學(xué)習(xí)python編程,想上一個好的python培訓(xùn)班,小編今天給大家全面分析一下關(guān)于python編程培訓(xùn)方面的問題,希望能給你答疑解惑。
    2018-01-01
  • 基于Python制作簡單的井字棋游戲

    基于Python制作簡單的井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)簡單的井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-04-04
  • 如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別)

    如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別)

    這篇文章主要介紹了將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04

最新評論