文章
16
粉丝
42
获赞
14
访问
4.9k
题目42 解题代码整理
(1)合并数组并快速排序找指定元素
• 合并数组A和B为新数组C。
• 对C进行快速排序(升序)。
• 若C的长度为L,结果为C[L/2]向上取整
(2)快速排序核心函数实现
// 分区函数
int partition(int arr[], int L, int R) {
int mid = arr[L]; // 选左端点为基准
while (L < R) {
// 从右往左找小于基准的元素
while (arr[R] >= mid && L < R) R--;
arr[L] = arr[R];
// 从左往右找大于基准的元素
while (arr[L] <= mid && L < R) L++;
arr[R] = arr[L];
}
arr[L] = mid; // 基准归位
return L; // 返回基准位置
}
// 快速排序递归函数
void qs(int A[], int L, int R) {
if (L >= R) return;
int m = partition(A, L, R);
qs(A, L, m - 1); // 左区间排序
qs(A, m + 1, R); // 右区间排序
}
// 主函数
int main() {
// 假设A、B为已知数组,这里示例初始化(可根据实际情况修改)
int ...
登录后发布评论
暂无评论,来抢沙发