python 实现插入排序,冒泡排序,快速排序,选择排序
来源:互联网 发布:风居住的街道 知乎 编辑:程序博客网 时间:2024/05/22 05:58
#!/usr/bin/python
# coding:utf-8
#直接插入排序
def insert_sort(list):
for i in range(len(list)):
Key = list [i] #待插入元素
j = i - 1
while(Key < list[j] and j >= 0):
list[j+1] = list[j] #后移元素
list[j] = Key
j=j-1
return list
#冒泡排序
def bubble_sort(list):
for i in range(1, len(list)):
for j in range(len(list)-i):
if list[j] > list [j+1]:
list[j+1],list[j] =list[j],list[j+1]
return list
#快速排序
def position_key(list, low, high):
i = low
j = high
key = list[low]
while(i < j):
while(i < j and list[j] >= key): #从右向左,寻找第一个小于基准元素的数据索引。 注意:i<y 的判断,内循环更新j
j -= 1
if i < j :
list[i] = list[j]
while(i<j and list[i] <= key): #从左向右,寻找地一个大于基准元素的数据索引。i<y同上
i += 1
if i < j:
list[j] = list[i]
list[j] = key # 基准元素位置
return j
def quick_sort(list, low, high):
if low < high:
position = position_key(list, low, high) #将数据分成前后两个子序列(前边序列值均小于后边序列)
quick_sort(list, low, position-1) #将前面的序列快速排序
quick_sort(list, position+1, high) #将后面的序列快速排序
return list
#选择排序
def select_sort(list):
for i in range(len(list)):
for j in range(i, len(list)):
if list[i] > list[j]:
list[i], list[j] = list[j], list[i]
return list
list = [23, 232, 11, 89,121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
print '原始序列 :', list
print '直接插入排序:', insert_sort(list)
print '冒泡排序 :', bubble_sort(list)
print '快速排序 :', quick_sort(list, 0, len(list)-1)
# coding:utf-8
#直接插入排序
def insert_sort(list):
for i in range(len(list)):
Key = list [i] #待插入元素
j = i - 1
while(Key < list[j] and j >= 0):
list[j+1] = list[j] #后移元素
list[j] = Key
j=j-1
return list
#冒泡排序
def bubble_sort(list):
for i in range(1, len(list)):
for j in range(len(list)-i):
if list[j] > list [j+1]:
list[j+1],list[j] =list[j],list[j+1]
return list
#快速排序
def position_key(list, low, high):
i = low
j = high
key = list[low]
while(i < j):
while(i < j and list[j] >= key): #从右向左,寻找第一个小于基准元素的数据索引。 注意:i<y 的判断,内循环更新j
j -= 1
if i < j :
list[i] = list[j]
while(i<j and list[i] <= key): #从左向右,寻找地一个大于基准元素的数据索引。i<y同上
i += 1
if i < j:
list[j] = list[i]
list[j] = key # 基准元素位置
return j
def quick_sort(list, low, high):
if low < high:
position = position_key(list, low, high) #将数据分成前后两个子序列(前边序列值均小于后边序列)
quick_sort(list, low, position-1) #将前面的序列快速排序
quick_sort(list, position+1, high) #将后面的序列快速排序
return list
#选择排序
def select_sort(list):
for i in range(len(list)):
for j in range(i, len(list)):
if list[i] > list[j]:
list[i], list[j] = list[j], list[i]
return list
list = [23, 232, 11, 89,121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
print '原始序列 :', list
print '直接插入排序:', insert_sort(list)
print '冒泡排序 :', bubble_sort(list)
print '快速排序 :', quick_sort(list, 0, len(list)-1)
print '选择排序 :', select_sort(list)
结果如下:
原始序列 : [23, 232, 11, 89, 121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
直接插入排序: [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
冒泡排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
快速排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
选择排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
阅读全文
0 0
- python 实现插入排序,冒泡排序,快速排序,选择排序
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- java实现冒泡排序,插入排序,选择排序,快速排序
- Python 排序 冒泡排序 希尔排序 快速排序 插入排序 选择排序 归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 冒泡排序 快速排序 插入排序 堆排序 选择排序
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 数组排序:快速排序,选择排序,冒泡排序,插入排序
- Java 排序 快速排序 冒泡排序 选择排序 插入排序
- Java实现排序(插入排序+冒泡排序+选择排序+ Shell排序+快速排序)
- 选择排序、插入排序、冒泡排序python实现
- Python实现冒泡排序,选择排序,插入排序
- 选择排序、插入排序、冒泡排序python实现
- c++实现冒泡,选择,插入,快速排序
- 【Javascript】实现快速,选择,冒泡,插入排序
- java实现冒泡,选择,插入,快速排序
- C++实现直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序,快速排序,堆排序
- 冒泡排序,选择排序,插入排序,快速排序(PHP)
- python#原创第13篇~while循环+答案
- 玩转JVM虚拟机:JVM内存结构
- iscsi
- 1*2*3.....*n的值
- Curator之异步接口。
- python 实现插入排序,冒泡排序,快速排序,选择排序
- 判断奇偶数
- 解决前台传入参数乱码问题
- 解决80端口被system占用
- 共用体
- 数据结构实验之查找七:线性之哈希表
- .net转java 之 MyBatis入门教程
- C++ char 与uchar区别
- 软件设计师系列1——软件设计师都干点儿啥