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 氣泡...