Python實現排序方法常見的四種

2022-09-25 11:57:12 字數 2003 閱讀 1446

1.氣泡排序,相鄰位置比較大小,將比較大的(或小的)交換位置

def maopao(a):

for i in range(0,len(a)):

for j in range(0,len(a)-i-1):

if a[j]>a[

temp = a[j+1]

a[j+1] = a[j]

a[j] = temp

#print(a)

#print(a)

print(a)

2.選擇排序,遍歷選擇乙個最小的數與當前迴圈的第乙個數交換

def xuanze(a):

for i in range(0,len(a)):

k=itemp = a[i]

for j in range(i,len(a)):

if a[j]

3.快速排序:將子段的第乙個元素做為中值,先從右向左遍歷,如過比中值大high-1,如果比中值小,將這個值放到low那裡。

然後從左向右開始遍歷,如果左側的比中值大,將他放到high那裡。當low>=high時,將中值的值賦給low

(1.以下為參照***中的做法:

a =[7,1,3,2,6,54,4,4,5,8,12,34]

def sort(a,low,high):

while low < high:

temp = a[low]

while low < high and a[high]>=temp:

high = high-1

a[low]=a[high]

while lowyztsbjkijaksort(a,low,middle)

quicksort(a,middle+1,high)

print(a)

sort(a,0,len(a)-1)

quicksort(a,0,len(a)-1)

print(a)

(2.以下是參照網上的做法:

在做快速排序時一直各種問題,是因為地櫃那裡沒有考慮清楚,一直把low的值賦值為0了,實際上應該是不固定的low值,他每個子迴圈不定。

'''遇到問題沒人解答?小編建立了乙個python學習***:531509025

尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的**學習教程和pdf電子書!

'''a =[7,1,3,2,6,54,4,4,5,8,12,34]

def sort(a,low,high):

while lwww.cppcns.comow < high:

temp = a[low]

while low < high and a[high]>=temp:

high = high-1

while low

4.插入排序:從左向右遍歷,依次選取數值,從數值的左側從右向左遍歷,選擇第乙個比他小的數值的右側插入該數值,其他數值依次向後賦值

#插入排序

a =[7,1,3,2,6,54,4,4,5,8,12,34]

for i in range(0,len(a)-1):

temp=a[i+1]

j=i+1

while j>=0 and temp=-1:

k= i+1

while k>=j:

a[k]=a[k-1]

k=k-1

print(a)

a[j]=temp

print(a)

插入排序方法2,用到了列表的a.insert(1,2)和清楚a[2:3]=,這樣可以少用乙個迴圈

a =[7,1,3,2,6,54,4,4,5,8,12,34]

for i in range(1,len(a)-1):

temp=a[i]

j=i-1

while j>=0 and temp<=a[j]:

print(temp)

j=j-1

if j >=-1:

a[i:i+1]=

a.insert(j+1,temp)

print(a)

print(a)

常見的幾種排序方法實現

常見的幾種排序方法 氣泡排序 選擇排序 插入排序 選擇排序 1 氣泡排序 每次比較相鄰的像個數,值小的往前冒泡,時間複雜度o n2 2 選擇排序 每次選擇最小的乙個數放在前面,時間複雜度o n2 3 插入排序 每個數插入前面的有序數列中,時間複雜度o n2 4 選擇排序 利用遞迴方法,不斷將小於某個...

C 常見排序方法實現

pragma once description 排序演算法類 author qjf date 2012 3 2 class mysort include stdafx.h include mysort.h mysort mysort void mysort mysort void descripti...

python的幾種常見排序方法

簡單交換排序 n int input 請輸入需要排序的資料個數 x for i in range n for i in range n 1 for j in range i 1,n if x i x j x i x j x j x i 每次符合結果的都進行資料交換 print 排序後的資料 x 氣泡...