冒泡排序:两个for循环,两两交换
import numpy as np
import time
import math
def Sort(arr):
n = len(arr)
#外层循环
for i in range(n-1):
for j in range(n-i-1): #内层循环
if(arr[j] > arr[j+1]):
arr[j], arr[j+1] = arr[j+1], arr[j]
# arr = np.random.randint(100,size=2000)
# Sort(arr)
if __name__ == "__main__":
arr = [1,3,5,44,65,34,89,25,66,69,100]
Sort(arr)
print(arr)
print("冒泡排序已完成")
快速排序:
选基准,划左右
def quick_sort(array,start,end):
if start >=end:
return
mid, left, right =array[start], start, end #left,right代表索引,mid代表数组中的元素
# import pdb
# pdb.set_trace()
# print(array[start])
# print(start)
while left < right:
while array[right] >= mid and left < right:
right -=1
array[left] = array[right]
while array[left] <= mid and left < right:
left +=1
array[right] = array[left]
array[left] = mid
quick_sort(array,0,left-1)
quick_sort(array,left+1,end)
if __name__ == '__main__':
array = [1,23,3,45,32,66,67,44,89,53,29]
quick_sort(array,0,len(array)-1)
print(array)