算法思想:分治(二分)以及递归,时间复杂度
o
(
N
l
o
g
N
)
o(NlogN)
o(NlogN)
2. python代码
# 快速排序
# 首先从数组中寻找一个基准
# 数组中小于基准的数字放在基准左侧
# 大于基准的数字放在基准右侧
def quick_sort(l, start, end):if end > start:
m = start
n = end
base = l[m]while n > m:while(n > m)and(l[n]>= base):
# 右指针向左移动
n -=1
# 如果l[n]< base, 将该数值赋值l[m]
# 如果l[n]>= base, 将l[n-1]赋值l[m]
l[m]= l[n]while(n > m)and(l[m]<= base):
# 左指针向右移动
m +=1
# 同上
l[n]= l[m]
l[m]= base
quick_sort(l, start, m-1)quick_sort(l, n+1, end)return l
if __name__ =='__main__':
x =[2,4,6,3,5,8]print(quick_sort(x,0,5))
3. C++代码
// c++voidquickSort(int *array, int left, int right){if(left < right){
int base = array[left];
int m = left, n = right;while(m < n){while(array[n]>= base && m < n)
n--;
array[m]= array[n];while(array[m]<= base && m < n)
m++;
array[n]= array[m];}
array[low]= base;quickSort(array, left, m -1);quickSort(array, n +1, right);}}