冒泡排序、快速排序

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值