#牛客chatgpt在线求职答疑#写一段代码,对数组进行快速排序
全部评论
以下是一个基于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`)的元素移动到左侧,将大于主元素的元素移动到右侧,然后将主元素放置到合适的位置。
相关推荐
11-24 10:46
山东大学 嵌入式软件工程师 给一个offer求了:他也还好吧,跟大部分人比他算是很幸运的了,感觉他三句话离不开北大,但是如果他出生在距离北京八中50公里以外的河北省,他的人生会截然不同诶。京津冀总给人一种特别割裂的感觉。
点赞 评论 收藏
分享
11-12 18:47
中南大学 Java 点赞 评论 收藏
分享