MST
星途 面试题库

面试题:C++ 快速排序的分区函数实现

请用C++ 实现快速排序中的分区(Partition)函数,函数接收一个整数数组及其左右边界索引,返回一个索引值,使得左边的元素都小于等于该索引位置的元素,右边的元素都大于该索引位置的元素。
26.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

// 分区函数
int partition(int arr[], int low, int high) {
    int pivot = arr[high]; // 选择最后一个元素作为枢轴
    int i = low - 1; // 较小元素的索引

    for (int j = low; j < high; j++) {
        // 如果当前元素小于等于枢轴
        if (arr[j] <= pivot) {
            i++; // 增大较小元素的索引

            // 交换arr[i]和arr[j]
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }

    // 交换arr[i + 1]和arr[high](枢轴)
    int temp = arr[i + 1];
    arr[i + 1] = arr[high];
    arr[high] = temp;

    return i + 1; // 返回分区点的索引
}