快速排序 和 二分查找有什么区别?

伟洪winni 2018-09-21 02:35:12
快速排序随机取一个值, 二分查找取中间的值 ?
...全文
1386 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pku_yw 2018-11-12
  • 打赏
  • 举报
回复
引用 7 楼 weixin_42151929 的回复:
快排以数组第一个元素作为标准,其他元素依次与之比较,划分为左右两部分。然后对这两部分递归处理。
最坏情况下(有序数组)时间复杂度O(n2),平均时间复杂度O(nlogn ). 二分查找首先是有序的,以中间元素为标准比较,然后递归的在左右进行,时间复杂度O(log(n))。
pku_yw 2018-11-12
  • 打赏
  • 举报
回复
快排以数组第一个元素作为标准,其他元素依次与之比较,划分为左右两部分。然后对这两部分递归处理。
Jasonzhiying 2018-11-06
  • 打赏
  • 举报
回复
二分查找要求是有序的
伟洪winni 2018-10-10
  • 打赏
  • 举报
回复
这两个没有可比性
伟洪winni 2018-09-29
  • 打赏
  • 举报
回复

func QuickSort(data []int, L int) {
if L <= 1 {
return
}

mid := data[0]
left, right := 0, L-1

for i := 1; i <= right; {
fmt.Println(mid)
if mid < data[i] {
data[i], data[right] = data[right], data[i]
right --
} else {
data[i], data[left] = data[left], data[i]
left++
i++
}
}

QuickSort(data[:left], len(data[:left]))
QuickSort(data[left+1:], len(data[left+1:]))
}


应该写错了, 速度不是很快
john_liqinghan 2018-09-29
  • 打赏
  • 举报
回复
一个是排序,一个是查找。。。。
john_liqinghan 2018-09-29
  • 打赏
  • 举报
回复 1
类似于牛和狗有什么区别?
宁南学者 2018-09-27
  • 打赏
  • 举报
回复
有很大区别,有本质区别:
首先快速排序是在 序列无序情况下进行排序,首先,挖坑,选坑,坑一般在序列中间,然后把序列两边的数据进行兑换,(保证左边小于右边),使得最后坑左边小于坑右边,然后递归两边的子序列。 这个坑不一定在中间位置,也可以是序列第一个,第二个等。

而二分查找,是在序列有序的情况下,进行二分查找,比较容易理解。

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧