您的位置:首页 > 编程语言 > Python开发

python 算法

2016-08-05 13:03 429 查看
冒泡排序:
#!/usr/bin/env python
# encoding: utf-8

"""
@version: ??
@author: phpergao
@license: Apache Licence
@file: 冒泡排序.py
@time: 2016/8/5 10:11
"""

def maopao_sort(array):
for i in range(len(array)):
for j in range(len(array)-1-i,):
if array[j]>array[j+1]:
tmp=array[j]
array[j]=array[j+1]
array[j+1]=tmp

if __name__ == '__main__':
array=[95,56346,159,1,5,9,3,2,7,0,4,34,21,67,12,]
maopao_sort(array)
print(array)
执行结果:




选择排序:
#!/usr/bin/env python
# encoding: utf-8

"""
@version: ??
@author: phpergao
@license: Apache Licence
@file: 选择排序.py
@time: 2016/8/5 12:49
"""

def selection_sort(array):
for i in range(len(array)):
for j in range(i,len(array)):
if array[i]>array[j]:
tpm=array[i]
array[i]=array[j]
array[j]=tpm

if __name__ == '__main__':
array=[95,56346,159,1,5,9,3,2,7,0,4,34,21,67,12,]
selection_sort(array)
print(array)
执行结果:




选择排序优化版:
#!/usr/bin/env python
# encoding: utf-8

"""
@version: ??
@author: phpergao
@license: Apache Licence
@file: 选择排序优化版.py
@time: 2016/8/5 12:54
"""
import random

def selection_sort(array):
for i in range(len(array)):
smallest=i
for j in range(i,len(array)):
if array[smallest]>array[j]:
smallest=j
tmp=array[i]
array[i]=array[smallest]
array[smallest]=tmp

if __name__ == '__main__':
array=[]
for i in range(5000):
array.append(random.randrange(100000))
print(array)
selection_sort(array)
print(array)
执行结果:



插入排序:
#!/usr/bin/env python
# encoding: utf-8

"""
@version: ??
@author: phpergao
@license: Apache Licence
@file: 插入排序.py
@time: 2016/8/6 12:22
"""

def insertion_sort(array):
for i in range(1,len(array)):
position=i
current_val=array[i]
while position>0 and current_val<array[position-1]:
array[position]=array[position-1]
position-=1
array[position]=current_val

if __name__ == '__main__':
array=[9,7,5,3,1,53,6,3432,0]
insertion_sort(array)
print(array)
执行效果:




快速排序:
#!/usr/bin/env python
# encoding: utf-8

"""
@version: ??
@author: phpergao
@license: Apache Licence
@file: 快速排序.py
@time: 2016/8/8 12:18
"""
import random,time

def quick_sort(array,start,end):
print(">>>",start,end)
if start>=end:
return
k=array[start]
left_falg=start
right_flag=end
while left_falg<right_flag:
while left_falg<right_flag and array[right_flag]>k:
right_flag-=1
tmp=array[left_falg]
array[left_falg]=array[right_flag]
array[right_flag]=tmp

while left_falg<right_flag and array[left_falg]<=k:
left_falg+=1
tmp=array[left_falg]
array[left_falg]=array[right_flag]
array[right_flag]=tmp
print(array,left_falg,right_flag)

quick_sort(array,start,left_falg-1)
quick_sort(array,left_falg+1,end)

if __name__ == '__main__':
array=[3,5,6,2,8,4,4534,324,42345235423,43,56,9,1,2]
quick_sort(array,0,len(array)-1)
print(array)
pass
执行效果:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 file python