最近在学习算法时,了解到了一些关于排序的算法实现,在这里我整理了一下,并用python实现,具体实现请看下面代码:
(一)、冒泡排序算法
def pop_sort(alist)
i = 0
while i < len(a) - 1:
count = 0
for j in range(len(alist) - 1 - i):
if alist[j] > alist[j + 1]:
alist[j], alist[j + 1] = alist[j + 1], alist[j]
count += 1
if count == 0:
break
i += 1
(二)、插入排序
def insert_sort(mylist):
if len(mylist) <= 2:
return mylist
for i in range(len(mylist)):
for j in range(i, 0, -1):
if mylist[i] < mylist[j]:
mylist[i], mylist[j] = mylist[j], mylist[i]
return mylist
(三)、选择排序
def choose_sort(aList):
for i in range(len(aList)):
a_min = i
for j in range(i, len(aList)):
if aList[j] < aList[a_min]:
a_min = j
if i != a_min:
aList[i], aList[a_min] = aList[a_min], aList[i]
(四)、希尔排序
def shell_sort(alist):
n = len(alist)
gap = n // 2
while gap >= 1:
for i in range(gap, n):
j = i
while (j - gap) >= 0:
if alist[j] < alist[j - gap]:
alist[j], alist[j - gap] = alist[j - gap], alist[j]
j -= gap
else:
break
gap //= 2
(五)快排
def quick_sort(alist, start, end):
if start >= end:
return
mid = alist[alist[start]]
left = start
right = end
while left < right:
while left < right and alist[right] >= mid:
right -= 1
alist[left] = alist[right]
while left < right and alist[left] <= mid:
left += 1
alist[right] = alist[left]
alist[left] = mid
quick_sort(alist, start, left - 1)
quick_sort(alist, right+1, end)