日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python常用算法有哪些_python常见的排序算法有哪些?

發(fā)布時間:2024/7/19 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python常用算法有哪些_python常见的排序算法有哪些? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家都知道,關(guān)于python的算法有很多,其中最為復雜的就是python的排序算法,因為它并不是單一的,而是復雜的,關(guān)于排序算法就有好幾種不同的方式,大家可以根據(jù)以下內(nèi)容,結(jié)合自己的項目需求,選擇一個最佳的算法。

1、插入排序:每步將一個待排序的記錄,按其關(guān)鍵碼值的大小插入前面已經(jīng)排序的文件中適當位置上,直到全部插入完為止。

代碼如下:#L=[5,2,3,1,6,9]

# def insert_sort(list):

# leng=len(list);//求list長度

# for i in range(1,leng):

# temp=list[i];//設(shè)置哨兵

# j=i;

# while(j>0 and list[j-1]>temp):

# list[j]=list[j-1];//大的元素后移

# j=j-1;

# list[j]=temp;//遇到比哨兵小的元素,將其設(shè)置為哨兵

# return list;

# print(insert_sort(L))

2、冒泡排序:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到

結(jié)尾的最后一對。在這一點,最后的元素應該會是最大的數(shù)。針對所有的元素重復以上的步驟,除了最后一個。持續(xù)每次對越來

越少的元素重復上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。

代碼如下:# def bubble_sort(list):

# leng=len(list);

# for i in range(0,leng)://控制趟數(shù)

# flag=True

# for j in range(1,leng-i):

# if list[j-1]>list[j]:

# flag=False;

# list[j-1],list[j]=list[j],list[j-1];//交換這兩個數(shù)

# if flag:

# break

# return list;

# L=[9,5,6,8,4,2]

# print(bubble_sort(L))

3、選擇排序:它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全

部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5后面)。

代碼如下:# def select_sort(list):

# leng=len(list)

# for i in range(0,leng):

# min=i //設(shè)置哨兵,假設(shè)第一個元素是最小的

# for j in range(i+1,leng):

# if list[j]

# min=j //開始尋找比哨兵小的元素。如果小則將重新設(shè)置哨兵位置

# if min!=i:

# list[i],list[min]=list[min],list[i]#交換這兩個數(shù)

# return list

# L=[-4,1,2,5,3,-2]

4、快速排序:它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的

所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。

代碼如下:# def partition(list,low,high)://劃分算法

# key=list[low]

# while(low

# while(low=key):high=high-1

# if low

# list[low]=list[high]

# low=low+1

# while(low

# if low

# list[high]=list[low]

# high=high-1

# list[low]=key

# return low

#

# def quick_sort(list,low,high)://快速排序算法

# if low

# pos=partition(list,low,high)

# quick_sort(list,low,pos-1)

# quick_sort(list,pos+1,high)

# return list

# L=[45,12,-32,65,28,9,-75,34]

# print(quick_sort(L,0,len(L)-1))

5、堆排序:堆排序(Heapsort)是指利用堆積樹(堆)這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法,它是選擇排序的一種。

代碼如下:#堆排序

# def HeapAdjust(list,pos,len)://調(diào)整堆算法

# lchild=2*pos+1

# rchild=2*pos+2

# min=pos

# if pos<(len-1)/2:

# if lchild

# min=lchild;

# if rchild

# min=rchild;

# if min!=pos:

# list[pos],list[min]=list[pos],list[min]

# HeapAdjust(list,min,len)

# return list

#

# def BuildHeap(list,len)://建堆算法

# i=len/2-1

# while(i>=0):

# HeapAdjust(list,i,len)

# i=i-1

# return list

#

# def Heap_sort(list,len)://堆排序算法

# BuildHeap(list,len)

# while(len):

# list[0],list[len-1]=list[len-1],list[0]

# len=len-1

# HeapAdjust(list,len,0)

# return list

#

# L=[45,12,-32,65,28,9,-75,34]

# print(Heap_sort(L,len(L)))

好了,以上就是關(guān)于python常見的排序算法以及用法了,相信大家結(jié)合學習,一定更加深印象。如需了解更多python實用知識,點擊進入PyThon學習網(wǎng)教學中心。

總結(jié)

以上是生活随笔為你收集整理的python常用算法有哪些_python常见的排序算法有哪些?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。