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

python常用排序算法的實現(xiàn)代碼

 更新時間:2019年11月08日 16:52:43   作者:Mars.wang  
這篇文章主要介紹了python常用排序算法的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了python常用排序算法的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

排序是計算機(jī)語言需要實現(xiàn)的基本算法之一,有序的數(shù)據(jù)結(jié)構(gòu)會帶來效率上的極大提升。

1.插入排序

插入排序默認(rèn)當(dāng)前被插入的序列是有序的,新元素插入到應(yīng)該插入的位置,使得新序列仍然有序。

def insertion_sort(old_list):
  n=len(old_list)
  k=0
  for i in range(1,n):
    temp=old_list[i]
    j=i
    while j>0 and temp<old_list[j-1]:
      old_list[j]=old_list[j-1]
      j=j-1
    old_list[j]=temp
  return old_list

2.冒泡排序

冒泡排序的原理是對序列進(jìn)行遍歷,遍歷過程中如果發(fā)現(xiàn)相鄰兩個元素,左邊的元素大于右邊,則進(jìn)行交換,一次遍歷之后最大的元素被移動到對尾,然后進(jìn)行第二次遍歷,直到隊列有序。

def bubble_sort(old_list):
  n=len(old_list)
  for i in range(n-1):
    for j in range(n-1-i):
      if old_list[j]>old_list[j+1]:
        old_list[j],old_list[j+1]=old_list[j+1],old_list[j]
  return old_list

3.快速排序

快速排序的實現(xiàn)方法是設(shè)置兩個游標(biāo),一個從前往后,一個從后往前,如果左側(cè)游標(biāo)所指數(shù)據(jù)大于右側(cè),兩數(shù)據(jù)進(jìn)行交換,直到兩個游標(biāo)指向同一數(shù)據(jù),則第一趟遍歷結(jié)束。結(jié)束時游標(biāo)所在數(shù)據(jù),左側(cè)都比其小,右側(cè)都比其大。

接下來對游標(biāo)前后的兩個序列進(jìn)行遞歸操作。

def quick_sort(list,low,high):
  i=low
  j=high  
  if i >= j:
    return list
  key=list[i]
  while i < j:
    while i < j and list[j]>=key:
      j = j - 1
    list[i]=list[j]
    while i < j and list[i]<=key:
      i = i + 1
    list[j]=list[i]
  list[i]=key
  quick_sort(list,low,i-1)
  quick_sort(list,j+1,high)
  return list

4.選擇排序

選擇排序的原理是是先找到起始數(shù)組中最小的元素,將它交換到i=0;然后尋找剩下元素中最小的元素,將它交換到i=1的位置…… 直到找到第二大的元素,將它交換到n-2的位置。這時,整個數(shù)組的排序完成。

def select_sort(list):
  length=len(list)
  for i in range(length):
    min_index=i
    for j in range(i,length):
      if list[j]<list[min_index]:
        min_index=j
    list[i],list[min_index]=list[min_index],list[i]
  return list

5.歸并排序

歸并排序是對數(shù)組進(jìn)行拆分再拆分,直到不能再拆分,然后分別對最小粒度的子數(shù)組進(jìn)行合并,然后再合并稍微大一點(diǎn)的數(shù)組,直到最終合成一個最大的數(shù)組。分兩個函數(shù)完成,一個負(fù)責(zé)拆分,一個負(fù)責(zé)排序合并。

def merge_sort(list):
  if len(list)<=1:
    return list
  mid=int(len(list)/2)
  left=merge_sort(list[:mid])
  right=merge_sort(list[mid:])
  return merge(left,right)
def merge(list1,list2):
  list=[]
  i,j=0,0
  while i<len(list1) and j<len(list2):
    if list1[i]<list2[j]:
      list.append(list1[i])
      i=i+1
    elif list1[i]>=list2[j]:
      list.append(list2[j])
      j=j+1
  list.extend(list1[i:])
  list.extend(list2[j:])
  return list

6.希爾排序

def shell_sort(nums):
  step = len(nums)/2
  while step > 0:
    for i in range(step, len(nums)):
      while i >= step and nums[i-step] > nums[i]:
        nums[i], nums[i-step] = nums[i-step], nums[i]
        i -= step
    step = step/2
  return nums

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • scrapy自定義pipeline類實現(xiàn)將采集數(shù)據(jù)保存到mongodb的方法

    scrapy自定義pipeline類實現(xiàn)將采集數(shù)據(jù)保存到mongodb的方法

    這篇文章主要介紹了scrapy自定義pipeline類實現(xiàn)將采集數(shù)據(jù)保存到mongodb的方法,涉及scrapy采集及操作mongodb數(shù)據(jù)庫的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • python3中int(整型)的使用教程

    python3中int(整型)的使用教程

    這篇文章主要介紹了關(guān)于python3中int(整型)的使用教程,文中介紹的非常詳細(xì),相信對大家學(xué)習(xí)或者使用python3能具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Django執(zhí)行源生mysql語句實現(xiàn)過程解析

    Django執(zhí)行源生mysql語句實現(xiàn)過程解析

    這篇文章主要介紹了Django執(zhí)行源生mysql語句實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python 如何執(zhí)行控制臺命令與操作剪切板

    python 如何執(zhí)行控制臺命令與操作剪切板

    這篇文章主要介紹了python 如何執(zhí)行控制臺命令與操作剪切板,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中實現(xiàn)棧的三種方法

    python中實現(xiàn)棧的三種方法

    這篇文章主要介紹了python中實現(xiàn)棧的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 實例講解Python3中abs()函數(shù)

    實例講解Python3中abs()函數(shù)

    在本篇文章里小編給大家分享了關(guān)于Python3中abs()函數(shù)的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • 使用Python實現(xiàn)牛頓法求極值

    使用Python實現(xiàn)牛頓法求極值

    今天小編就為大家分享一篇使用Python實現(xiàn)牛頓法求極值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • tensorflow 中對數(shù)組元素的操作方法

    tensorflow 中對數(shù)組元素的操作方法

    今天小編就為大家分享一篇tensorflow 中對數(shù)組元素的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python捕獲警告的三種方法

    python捕獲警告的三種方法

    這篇文章主要介紹了python捕獲警告的三種方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python的進(jìn)程,線程和協(xié)程實例詳解

    Python的進(jìn)程,線程和協(xié)程實例詳解

    這篇文章主要為大家詳細(xì)介紹了Python進(jìn)程,線程和協(xié)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

军事| 克东县| 海口市| 桐柏县| 汶上县| 梁河县| 旬邑县| 新闻| 庆城县| 手游| 桑日县| 北海市| 莒南县| 河北区| 紫金县| 拜城县| 东城区| 安吉县| 龙口市| 荔波县| 陈巴尔虎旗| 大埔区| 勃利县| 山东省| 宜宾市| 南郑县| 浦东新区| 黄陵县| 盖州市| 任丘市| 霞浦县| 延寿县| 仙居县| 铜鼓县| 安达市| 环江| 黄骅市| 女性| 来宾市| 嘉定区| 泽库县|