文章

16

粉丝

42

获赞

14

访问

4.9k

头像
2011年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年10月19日 10:53
阅读数 82

题目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 ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发