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

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

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

一、快速排序

    快速排序(Quicksort)是對冒泡排序的一種改進。由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數(shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(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)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應位置并插入。插入排序在實現(xiàn)上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。

    插入排序

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)
 
# 輸出結果如下
[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]

 
# 利用關鍵字在列表中的索引位置,進行自定義排序

相關文章

  • python編寫一個GUI倒計時器

    python編寫一個GUI倒計時器

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

    python進程管理工具supervisor的安裝與使用教程

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

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

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

    Python的三種主要模塊介紹

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

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

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

    Python批量啟動多線程代碼實例

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

    Python安裝Pytorch最新圖文教程

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

    python編程培訓 python培訓靠譜嗎

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

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

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

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

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

最新評論