备忘录:
练习,即可。
1.冒泡排序
def bubble_sort(listInfo):
"""冒泡排序"""
length = len(listInfo)
for j in range(length-1):
count = 0
for i in range(0, length-1-j):
if listInfo[i] > listInfo[i+1]:
listInfo[i],listInfo[i+1] = listInfo[i+1],listInfo[i]
count += 1
if 0 == count:
return
def main():
print("冒泡排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
bubble_sort(li)
print(li)
if __name__ == '__main__':
main()
2.选择排序
def select_sort(listInfo):
"""选择排序"""
length = len(listInfo)
for j in range(length-1):
min_index = j
for i in range(j+1, length):
if listInfo[min_index] > listInfo[i]:
min_index = i
listInfo[j], listInfo[min_index] = listInfo[min_index], listInfo[j]
def main():
print("选择排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
select_sort(li)
print(li)
if __name__ == '__main__':
main()
3.插入排序
def insert_sort(listInfo):
"""插入排序"""
length = len(listInfo)
for j in range(1, length):
i = j
while i > 0:
if listInfo[i] < listInfo[i-1]:
listInfo[i],listInfo[i-1] = listInfo[i-1],listInfo[i]
i -= 1
else:
break
def main():
print("插入排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
insert_sort(li)
print(li)
if __name__ == '__main__':
main()
4.快速排序
def quick_sort(listInfo, first, last):
"""快速排序"""
if first >= last:
return
mid_value = listInfo[first]
low = first
high = last
while low < high:
while low < high and listInfo[high] >= mid_value:
high -=1
listInfo[low] = listInfo[high]
while low < high and listInfo[low] < mid_value:
low +=1
listInfo[high] = listInfo[low]
listInfo[low] = mid_value
quick_sort(listInfo,first,low-1)
quick_sort(listInfo, low+1, last)
def main():
print("快速排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
quick_sort(li,0,len(li)-1)
print(li)
if __name__ == '__main__':
main()
5.希尔排序
def shell_sort(listInfo):
"""希尔排序"""
length = len(listInfo)
gap = length // 2
while gap > 0:
for j in range(gap,length):
i = j
while i > 0:
if listInfo[i] < listInfo[i - gap]:
listInfo[i], listInfo[i - gap] = listInfo[i - gap], listInfo[i]
i -= gap
else:
break
gap //=2
def main():
print("希尔排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
shell_sort(li)
print(li)
if __name__ == '__main__':
main()
6.归并排序
def merge_sort(listInfo):
"""归并排序"""
length = len(listInfo)
if length <= 1:
return listInfo
mid = length // 2
left_li = merge_sort(listInfo[:mid])
right_li = merge_sort(listInfo[mid:])
left_pointer, right_pointer = 0, 0
result = []
while left_pointer < len(left_li) and right_pointer < len(right_li):
if left_li[left_pointer] < right_li[right_pointer]:
result.append(left_li[left_pointer])
left_pointer +=1
else:
result.append(right_li[right_pointer])
right_pointer += 1
result += left_li[left_pointer:]
result += right_li[right_pointer:]
return result
def main():
print("归并排序测试:")
li = [36,99,55,78,11,65,22,18,58]
print(li)
sortedResult = merge_sort(li)
print(sortedResult)
if __name__ == '__main__':
main()
7.堆排序
8.基数排序
以上,感谢。