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