算法思想-快排

思路

  • 首先在数组中选一个数作为基准,通常为数组第一个数
  • 指针 i,j 分别指向数组第一个元素和最后一个元素。从 j 向左开始遍历,找到比基准小的数,将指针j对应的数赋值给指针i所在的位置,i++。交换,从i开始向右遍历,找到比基准大的数,将指针i对于的数赋值给指针j所在的位置,j–。不断重复以上步骤,知道 i、j 相遇。再将基准的值赋给指针 i、j 所在的位置。第一轮快排结束,基准左侧的数都小于等于基准,右侧的数都大于等于基准
  • 将数组以基准为界限,划分成两个子数组。重复以上快排步骤。直到子数组的长度为1,快排结束。

相关题解

  • 5000 个数里选择 Top500

时间复杂度 O(n)
目的:找到下标为 499 的基准,这样,左边的数就都比基准大(快排思路中大小交换)

  • 一个整型数组,有负数,0 ,正数,找重复次数最多的数。可能存在重复次数相同的数,返回其中一个即可

快排,用两个个变量记录 出现次数最多的数 和 其出现次数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值