快速排序
class Solution(object):
def Sort(self, arr, start, end):
if start < end:
i = start
j = end
tmp = arr[start]
while i < j:
while i < j and arr[j] > tmp:
j -= 1
if i < j:
arr[i] = arr[j]
while i < j and arr[i] < tmp:
i += 1
if i < j:
arr[j] = arr[i]
arr[i] = tmp
self.Sort(arr, start, i-1)
self.Sort(arr, i+1, end)
if __name__ == "__main__":
arr = [1, 2, 5, 3, 7, 4, 9]
Solution().Sort(arr, 0, len(arr)-1)
print(arr)
归并排序
class Solution(object):
def Sort(self, arr, start, end):
if start < end:
mid = (start+end)//2
self.Sort(arr, start, mid)
self.Sort(arr, mid+1, end)
self.Merge(arr, start, mid, end)
def Merge(self, arr, start, mid, end):
tmp1 = arr[start:mid+1]
tmp2 = arr[mid+1:end+1]
ret = []
i = 0
j = 0
while i < len(tmp1) and j < len(tmp2):
if tmp1[i] <= tmp2[j]:
ret.append(tmp1[i])
i += 1
else:
ret.append(tmp2[j])
j += 1
if i == len(tmp1):
ret += tmp2[j:]
if j == len(tmp2):
ret += tmp1[i:]
arr[start:end+1] = ret
if __name__ == "__main__":
arr = [1, 2, 5, 3, 7, 4, 9]
Solution().Sort(arr, 0, len(arr)-1)
print(arr)