冒泡、插入、选择--三种排序

来源:互联网 发布:广州移动宽带 知乎 编辑:程序博客网 时间:2024/06/09 23:33

一、冒泡排序
算法思路:两两比较相邻记录之间关键字,如果反序则交换,直到没有反序的记录为止。
具体代码:

import randomdata=[]n=int(raw_input())for re in range(0,n):    a=random.randint(1,1000)    data.append(a)    # data[re] = aprint datafor 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]=tempprint datasum = 1for i in range(0,len(data)-1):    if data[i]>data[i+1]:        sum = 0        breakif 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 randomn = int(raw_input())a = []for re in range(n):    b=random.randint(1,n*n)    a.append(b)print afor 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]=xprint atemp = 1for i in range (0,len(a)-1):    if a[i]>a[i+1]:        temp = 0        breakif 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 randoms = []n = int (raw_input())for i in range(n):    b = random.randint(1,n*n)    s.append(b)print sfor 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] = tempprint ssum = 1for i in range(0,len(s)-1):    if s[i] > s[i+1]:        sum = 0        breakif 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
阅读全文
0 0
原创粉丝点击