快排算法python以及C++实现

1. 快排的思想

  1. 在数组中任意寻找一个值作为基准点
  2. 将数组中小于基准点的数值放在基准点左侧,大于基准点的值放在右侧
  3. 将基准点两侧的数组重新快排,直至两侧数组中都只剩下一个元素
  4. 算法思想:分治(二分)以及递归,时间复杂度 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++
void quickSort(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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值