冒泡排序、快速排序
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
冒泡排序的第一次把数列中最大的元素沉到了最尾,无需在对比最后一个
(也可以是从最大的一头开始对比,然后一轮后去掉一个最小的)
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
相关文章推荐
- 冒泡排序、选择排序、插入排序、快速排序
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)
- Java 选择排序、冒泡排序、快速排序、直接插入排序、Java自带的排序等方法的使用和总结
- 冒泡排序,快速排序,选择排序
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- 两种常用的交换排序算法--冒泡排序、快速排序
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- 10种算法原理(冒泡排序,选择排序,快速排序,堆排序,希尔排序,桶排序等)
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 选择排序,插入排序,冒泡排序,希尔排序,快速排序,归并排序
- delphi dynamic Array 排序 快速排序,选择排序,冒泡排序
- php 冒泡排序 快速排序
- 排序算法之--从冒泡排序到快速排序
- C++排序:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- 6种排序算法及其比较 简单选择排序,堆排序,简单插入排序,希尔排序,冒泡排序,快速排序,归并排序
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- 常见排序集合(冒泡排序,选择排序,直接插入排序,二分插入排序,快速排序,希尔排序,归并排序)
- Java实现冒泡排序和快速排序,选择…