一、氣泡排序
演算法思路:兩兩比較相鄰記錄之間關鍵字,如果反序則交換,直到沒有反序的記錄為止。
具體**:
import random
data=
n=int(raw_input())
for re in range(0,n):
a=random.randint(1,1000)
# data[re] = a
print
data
for i in range(0,n):
for j in range(i+1,n):
ifdata[i] >= data[j]:
temp =data[j]
data[j]=data[i]
data[i]=temp
print
data
sum = 1
for i in range(0,len(data)-1):
ifdata[i]>data[i+1]:
sum = 0
break
if sum == 1:
print 'true'
else:
print 'false'
輸出效果:
9
[682, 494, 706, 113, 928, 600, 639, 111, 119]
[111, 113, 119, 494, 600, 639, 682, 706, 928]
true
二、插入排序
演算法思路:把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表包含乙個元素,無序表中包含n-1個元素。排序過程就是每次從無序表中取出乙個元素,將其插入到有序表中的合適位置,使之成為新的有序表,重複n-1次即可完成排序過程。排序過程類似打撲克牌時整理手中牌的過程。
具體**:
import random
n = int(raw_input())
a =
for re in range(n):
b=random.randint(1,n*n)
print a
for i in range(0,len(a)):
x = a[i]
j=i-1
while j>=0
anda[j]>x :
a[j+1]=a[j]
j=j-1
a[j+1]=x
print a
temp = 1
for i in range (0,len(a)-1):
ifa[i]>a[i+1]:
temp = 0
break
if temp == 1:
print 'true'
else:
print 'false'
輸出效果:
8
[24, 44, 6, 61, 50, 20, 51, 9]
[6, 9, 20, 24, 44, 50, 51, 61]
true```
三、選擇排序:
演算法思路:首先,找到陣列中最小的那個元素;其次,將它和陣列的第乙個元素交換位置(如果第乙個元素就是最小元素那麼它就和自己交換);再次,在剩下的元素中找到最小的元素。將它與第二個元素交換位置。如此往復,直到將整個陣列排序。
**實現:
import random
s =
n = int (raw_input())
for i in range(n):
b = random.randint(1,n*n)
print s
for i in range
(0,len(s)-1):
index = i
for j in range(i+1,len(s)):
if s[j]print s
sum =1
for i in range
(0,len(s)-1):
if s[i] > s[i+1]:
sum =0
break
if sum ==1:
print
'true'
else:
print
'false'
輸出結果:
8
[56, 22, 25, 51, 64, 11, 12, 20]
[11, 12, 20, 22, 25, 51, 56, 64]
true
冒泡 選擇 插入三種排序
工作閒下來了,偶來學習下排序演算法的思想,適當的緩解下壓力,換個思考方式也很不錯的。氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為...
三種簡單排序比較總結(冒泡 插入 選擇)
首先我們了解一下三種演算法穩定性 演算法 穩定性排序方式 時間複雜度 最好時間 空間複雜度 冒泡穩定 交換o n2 o n o 1 插入穩定 直接插入 o n2 o n o 1 選擇不穩定 直接選擇 o n2 o n o 1 三種最好時間都是 在接近有序的時候!接著我們看一下 首先我們定一下陣列 1...
冒泡,插入,選擇排序
經典的排序演算法,此文章介紹三個 氣泡排序 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。public void bubblesort int a while iswrap for int ...