您的位置:首页 > 其它

冒泡排序、快速排序

2014-03-21 17:48 176 查看
1、冒泡排序:数列中的元素,相邻的一一对比,如果前者大于后者则交换位置;第二趟,出去最后一个,相邻的一一对比,如果前者大于后者则交换位置。

冒泡排序的第一次把数列中最大的元素沉到了最尾,无需在对比最后一个

(也可以是从最大的一头开始对比,然后一轮后去掉一个最小的)

python 脚本

def bubble(mylist):

for j in range(len(mylist)-1,-1,-1):

for i in range(j):

if mylist[i]>mylist[i+1]:

mylist[i],mylist[i+1] = mylist[i+1],mylist[i]

print mylist

2、快速排序:快速排序的思想是,从数列中随机选择一个基准数,把数列中大于基准数的元素放到右边,把数列中小于基准数的元素放到左边,第一次完成;然后把基准数左边的在进行随机选择基准数,把数列中大于基准数的元素放到右边,把数列中小于基准数的元素放到左边;然后把基准数右边的在进行随机选择基准数,把数列中大于基准数的元素放到右边,把数列中小于基准数的元素放到左边

python 脚本

def quick(mylist):

if len(mylist)<=1:

return mylist

small=[]

big =[]

i = random.randint(0,len(mylist))

j =mylist.pop(i)

for item in sublist:

if item>j:

big.append(item)

else:

small.append(item)

return quick(small)+[j]+quick(big)

3、归并排序

归并排序是对两个已经排序好了的数列进行归并排序,对比两个数列的第一个元素,把比较小的放入list中

python源代码如下

def merg(list1,list2):

alllist=[]

list1=sort(list1)

list2 =sort(list2)

while list1 and list2:

if list1[0]<list2[0]:

alllist.append(list1[0])

list1.pop(0)

else:

allist.appen(list2[0])

list2.pop(0)

return allllist
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐