关注
以下是一个基于Lomuto分区方案的快速排序实现,可以对一个整数数组进行排序:
```c++
void quicksort(int arr[], int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quicksort(arr, low, pivot - 1);
quicksort(arr, pivot + 1, high);
}
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[high]);
return i + 1;
}
```
在此实现中,`quicksort` 函数递归调用自身,通过不断对数组进行分区,将其划分为更小的子数组,最终实现排序。`partition` 函数是用于实现分区的核心算法,基于Lomuto分区方案,将数组中小于主元素(`pivot`)的元素移动到左侧,将大于主元素的元素移动到右侧,然后将主元素放置到合适的位置。
查看原帖
点赞 评论
相关推荐
03-31 12:20
厦门大学 ETL工程师
勇敢的卷王在等off...:和同事聊了发现这7步里前3步就是产品经理的日常工作,所以PM做vibe coding有天然优势。但注意第2步——写给研发看的PRD和写给AI看的PRD完全是两个东西。给研发写'用户可以筛选订单' 研发秒懂 给AI写同样的话它会给你生成一个你完全不认识的筛选器。所以建议在PRD里每个功能都附一句'验收标准是什么' 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
37407次浏览 440人参与
# 网申一定要掌握的小技巧 #
20673次浏览 86人参与
# 厦门银行科技岗值不值得投 #
16298次浏览 359人参与
# AI替代不了什么? #
690次浏览 22人参与
# 面试紧张时你会有什么表现? #
35077次浏览 227人参与
# 学历VS实习,哪个更重要? #
3404次浏览 72人参与
# 一人一道大厂面试题 #
125191次浏览 1303人参与
# 机械人求职现状 #
39914次浏览 321人参与
# 分享一个让你热爱工作的瞬间 #
67476次浏览 500人参与
# 你的实习什么时候入职 #
367577次浏览 2362人参与
# 汇川技术求职进展汇总 #
189359次浏览 1065人参与
# uu们,春招你还来吗? #
66953次浏览 847人参与
# 面试中,你被问过哪些奇葩问题? #
98316次浏览 1363人参与
# 发工资后,你做的第一件事是什么 #
99894次浏览 320人参与
# 牛油的搬砖plog #
188776次浏览 1254人参与
# 一人分享一道面试手撕题 #
111702次浏览 2659人参与
# 面试被问到不会的问题,你怎么应对? #
28631次浏览 744人参与
# 你都用vibe coding做过什么? #
24974次浏览 945人参与
# 90后北漂现状 #
36230次浏览 214人参与
# 工作上你捅过哪些篓子? #
68694次浏览 318人参与
# 关于春招你都做了哪些准备? #
145501次浏览 768人参与
查看8道真题和解析