现在的位置: 主页 > 联系方式 > 文章列表

基本排序算法:Python实现

作者:上海瑞梁浩行投资咨询有限公司 来源:www.60899055.com 发布时间:2017-09-06 09:50:23
 

基本排序算法:Python实现

基本排序算法,包括冒泡排序,插入排序,选择排序,采集软件,站群软件,堆排序,快速排序等。

【冒泡排序】

复杂度是n*n

#coding:utf8
#author:HaxtraZ
#description:冒泡排序


def bubblesort1(a):
#每次找到一个最小元素,放到数组首部
n=len(a)
for i in range(0,n-1):
swapped=False
for j in range(n-1,i,-1):
if a[j]<a[j-1]:
a[j],a[j-1]=a[j-1],a[j]
swapped=True
if not swapped: break


def bubblesort2(a):
#这个版本的解释,在谭浩强C++2004版P137
#每次找到一个最大元素并放到数组末尾
#边界处做了优化
n=len(a)
for i in range(0,n-1):
swapped=False
for j in range(0, n-i-1):
if a[j]>a[j+1]:
a[j],a[j+1]=a[j+1],a[j]
swapped=True
if not swapped: break


def bubblesort3(a):
#这个版本来自维基百科
#外层循环本来有点问题的,如果是range(len(a)-1,1,-1)
#那么当输入数据为3,5,1时,结果不正确
#当然,维基百科上这个错误我已经修改过了。
for j in range(len(a)-1, 0, -1):
for i in range(0, j):
if a[i]>a[i+1]:
a[i],a[i+1]=a[i+1],a[i]
  

【插入排序】

复杂度是n*n

#coding:utf8
#author:HaxtraZ


def insertion_sort1(a):
#线性插入排序
for j in range(1, len(a)):
key = a[j]
i = j - 1
while i>=0 and a[i]>key:
a[i+1] = a[i]
i = i-1
a[i+1] = key

def binInsertSort(a):
#二分插入排序
n = len(a)
for j in range(1, n):
key = a[j]
i = j - 1

if key > a[i]:
continue
l, r = 0, i
while l <= r:
#print l, r
mid = (l + r) / 2
if key < a[mid]:
r = mid - 1
else:
l = mid + 1
k = j
while k > l:
a[k] = a[k - 1]
k = k - 1

a[l] = key
  

【选择排序】

复杂度是n*n

#coding:utf8
#author:HaxtraZ
#description:选择排序


def selectsort1(a):
#每次找最小元素
n=len(a)
for i in range(0, n-1):
for j in range(i+1, n):
minpos=i #minpos用于记录最小元素的下标
if a[j]<a[minpos]:
minpos=j
#如果在这里就交换a[j]和a[minpos],那就是bubblesort

if minpos!=i:
a[minpos],a[i]=a[i],a[minpos]

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:咸宁网站建设 http://xianning.45qun.com

  • 上一篇:JSP打印九九乘法表
  • 下一篇:最后一页
  •