一、冒泡排序
算法思路:两两比较相邻记录之间关键字,如果反序则交换,直到没有反序的记录为止。
具体代码:
import random
data=[]
n=int(raw_input())
for re in range(0,n):
a=random.randint(1,1000)
data.append(a)
# data[re] = a
print data
for i in range(0,n):
for j in range(i+1,n):
if data[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):
if data[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)
a.append(b)
print a
for i in range(0,len(a)):
x = a[i]
j=i-1
while j>=0 and a[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):
if a[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)
s.append(b)
print s
for i in range(0,len(s)-1):
index = i
for j in range(i+1,len(s)):
if s[j]<s[index]:
index = j
temp = s[i]
s[i] = s[index]
s[index] = temp
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