搜索算法总结
程序员文章站
2024-03-16 23:14:16
...
对最近学习的基础算法做一些总结,并举出一些相应的例子,仅此作为记录。
减治法(Decrease-and-Conquer)
减常因子
二分查找(Binary Search):
function BinSearch(A[0..n − 1], k)
lo ← 0
hi ← n − 1
while lo ≤ hi do
m ← ⌊(lo + hi)/2⌋
if A[m] = k then
return m
if A[m] > k then
hi ← m − 1
else
lo ← m + 1
return −1
Lomuto区分(Lomuto Partitioning)与 找出的第k小的元素的快速选择:
要注意的是k - 1 - s - lo意味着从s+1数起的第k0小元素:
function LomutoPartition(A[lo..hi])
p ← A[lo]
s ← lo
for i ← lo + 1 to hi do//利用i和p之间的差去换
if A[i] < p then
s ← s + 1
swap(A[s], A[i])
swap(A[lo], A[s])
return s
function QuickSelect(A[.], lo, hi, k)
s ← LomutoPartition(A, lo, hi)
if s − lo = k − 1 then
return A[s]
else
if s − lo > k − 1 then
QuickSelect(A, lo,s − 1, k)
else
QuickSelect(A,s + 1, hi,(k − 1) − (s − lo))
上一篇: python双边队列可真香
下一篇: java 封装、继承、多态
推荐阅读
-
SSD的pytorch实现训练中遇到的问题总结
-
高级搜索算法
-
搜索算法总结
-
java基础学习总结——方法的重载(overload)
-
B-Tree 设计与实现总结--《算法导论》
-
MySQL索引使用总结--索引创建方法CREATE INDEX与ALTER TABLE的区别
-
three.js(使用总结一)
-
Java中的日期时间 博客分类: java开发总结 java日期时间格式化java.util.Date
-
Android之时间和日期DatePicker和TimePicker 博客分类: 技术总结 Android时间日期DatePickerTimePicker
-
Java IO流学习总结 博客分类: JDK//Demo javaio