62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
|
|
#ifndef SORT_ALGORITHMS_APP_HPP
|
|||
|
|
#define SORT_ALGORITHMS_APP_HPP
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @file app.hpp
|
|||
|
|
* @brief 三种经典排序算法的函数声明
|
|||
|
|
*
|
|||
|
|
* 所有排序函数均对整型数组进行升序(非降序)排列。
|
|||
|
|
* 不允许使用标准库中的 std::sort。
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
namespace sort {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 冒泡排序 (Bubble Sort)
|
|||
|
|
*
|
|||
|
|
* 通过相邻元素比较和交换,将最大元素逐步“冒泡”至数组末尾。
|
|||
|
|
* 平均 / 最坏时间复杂度 O(n²),最好 O(n)(已有序时借助优化标记)。
|
|||
|
|
*
|
|||
|
|
* @param arr 待排序的整型数组
|
|||
|
|
* @param n 数组元素个数
|
|||
|
|
*/
|
|||
|
|
void bubbleSort(int arr[], int n);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 快速排序 (Quick Sort) — 便捷入口
|
|||
|
|
*
|
|||
|
|
* 调用递归核心版本,默认对 arr[0 .. n-1] 排序。
|
|||
|
|
* 平均时间复杂度 O(n log n),最坏 O(n²)。
|
|||
|
|
*
|
|||
|
|
* @param arr 待排序的整型数组
|
|||
|
|
* @param n 数组元素个数
|
|||
|
|
*/
|
|||
|
|
void quickSort(int arr[], int n);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 快速排序递归核心
|
|||
|
|
*
|
|||
|
|
* 选取基准元素(此处固定取 arr[low]),将数组划分为左右两部分,
|
|||
|
|
* 左半部分 ≤ 基准 ≤ 右半部分,然后递归排序左右子区间。
|
|||
|
|
*
|
|||
|
|
* @param arr 待排序数组
|
|||
|
|
* @param low 子区间起始下标
|
|||
|
|
* @param high 子区间结束下标
|
|||
|
|
*/
|
|||
|
|
void quickSort(int arr[], int low, int high);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 选择排序 (Selection Sort)
|
|||
|
|
*
|
|||
|
|
* 每轮从未排序部分选出最小元素,与未排序部分的首位交换位置。
|
|||
|
|
* 时间复杂度始终 O(n²),不稳定。
|
|||
|
|
*
|
|||
|
|
* @param arr 待排序的整型数组
|
|||
|
|
* @param n 数组元素个数
|
|||
|
|
*/
|
|||
|
|
void selectionSort(int arr[], int n);
|
|||
|
|
|
|||
|
|
} // namespace sort
|
|||
|
|
|
|||
|
|
#endif // SORT_ALGORITHMS_APP_HPP
|