您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python实现的几个常用排序算法实例

5b51 2022/1/14 8:18:28 python 字数 4488 阅读 377 来源 www.jb51.cc/python

前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。

概述

前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。

下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等。

def directInsertSort(seq):
 """ 直接插入排序 """
 size = len(seq)
 for i in range(1,size):
  tmp,j = seq[i],i
  while j > 0 and tmp < seq[j-1]:
   seq[j],j = seq[j-1],j-1
  seq[j] = tmp
 return seq

def directSelectSort(seq):
 """ 直接选择排序 """
 size = len(seq)
 for i in range(0,size - 1):
  k = i;j = i+1
  while j < size:
   if seq[j] < seq[k]:
    k = j
   j += 1
  seq[i],seq[k] = seq[k],seq[i]
 return seq

def bubbleSort(seq):
 """冒泡排序"""
 size = len(seq)
 for i in range(1,size):
  for j in range(0,size-i):
   if seq[j+1] < seq[j]:
    seq[j+1],seq[j] = seq[j],seq[j+1]
 return seq

def _divide(seq,low,high):
 """快速排序划分函数"""
 tmp = seq[low]
 while low != high:
  while low < high and seq[high] >= tmp: high -= 1
  if low < high:
   seq[low] = seq[high]
   low += 1
  while low < high and seq[low] <= tmp: low += 1
  if low < high:
   seq[high] = seq[low]
   high -= 1
 seq[low] = tmp
 return low

def _quickSort(seq,high):
 """快速排序辅助函数"""
 if low >= high: return
 mid = _divide(seq,high)
 _quickSort(seq,mid - 1)
 _quickSort(seq,mid + 1,high)

def quickSort(seq):
 """快速排序包裹函数"""
 size = len(seq)
 _quickSort(seq,size - 1)
 return seq

def merge(seq,left,mid,right):
 tmp = []
 i,j = left,mid
 while i < mid and j <= right:
  if seq[i] < seq[j]:
   tmp.append(seq[i])
   i += 1
  else:
   tmp.append(seq[j])
   j += 1
 if i < mid: tmp.extend(seq[i:])
 if j <= right: tmp.extend(seq[j:])

 seq[left:right+1] = tmp[0:right-left+1]

def _mergeSort(seq,right):
 if left == right:
  return
 else:
  mid = (left + right) / 2
  _mergeSort(seq,mid)
  _mergeSort(seq,right)
  merge(seq,mid+1,right)

#二路并归排序
def mergeSort(seq):
 size = len(seq)
 _mergeSort(seq,size - 1)
 return seq

if __name__ == '__main__':
 s = [random.randint(0,100) for i in range(0,20)]
 print s
 print "\n"
 print directSelectSort(copy(s))
 print directInsertSort(copy(s))
 print bubbleSort(copy(s))
 print quickSort(copy(s))
 print mergeSort(copy(s))


[8,10,45,95]
[8,95]

总结

以上是编程之家为你收集整理的Python实现的几个常用排序算法实例全部内容,希望文章能够帮你解决Python实现的几个常用排序算法实例所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶