揭秘高效快速排序:从代码实现到原理剖析
快速排序是一种高效的排序算法,它使用分治法来将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。以下是完整的快速排序实现代码: ```cpp #include <iostream> #include <cstdlib> #include <ctime> using namespace std; const int n = 10; const int min_val = 10; const int max_val = 99; int getrand(int min, int max) { return (rand() % (max - min + 1)) + min; } void set(int r[], int n) { for (int i = 0; i < n; i++) { r[i] = getrand(min_val, max_val); } } void show(int r[], int n) { for (int i = 0; i < n; i++) { cout << r[i] << " "; } cout << endl; } int partition(int r[], int i, int j) { int pivot = r[j]; // 选择最后一个元素作为基准 int pIndex = i; // pIndex是小于基准的元素的索引 for (int k = i; k < j; k++) { if (r[k] <= pivot) { swap(r[k], r[pIndex]); pIndex++; } } swap(r[pIndex], r[j]); // 把基准放到正确的位置 return pIndex; } void quicksort(int r[], int i, int j) { if (i < j) { int pIndex = partition(r, i, j); quicksort(r, i, pIndex - 1); // 递归排序左半部分 quicksort(r, pIndex + 1, j); // 递归排序右半部分 } } int main() { srand(time(0)); int a[n]; set(a, n); cout << "Unsorted array: "; show(a, n); quicksort(a, 0, n - 1); cout << "Sorted array: "; show(a, n); return 0; } ``` 代码解释: 1. getrand函数:生成一个在`min`和`max`之间的随机数。 2. set函数:用随机数填充数组。 3. show函数:打印数组内容。 4. partition函数:选择一个基准(这里选择的是数组的最后一个元素),然后将数组分为两部分,一部分小于等于基准,另一部分大于基准。最后返回基准的位置。 5. quicksort函数:递归地对数组进行快速排序。 6. main函数:初始化随机数种子,生成随机数组,调用快速排序并显示结果。 运行这段代码会输出未排序和已排序的数组。 ######[AI写代码神器 | 710点数解答 | 2024-11-14 10:44:25]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)162
- 探秘 Linux sensors 原理:从硬件读取到数据监测的全面剖析(GPT | 407点数解答 | 2024-10-21 16:06:25)261
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)457
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)354
- 超详细:实现LED灯中速→慢速→快速循环闪烁及特定顺序闪烁的程序修改方案(字节豆包 | 865点数解答 | 2024-10-20 21:13:53)246
- DSP2833x:实现D14、D12、D10 LED按中速→慢速→快速顺序循环闪烁的代码优化(阿里通义 | 1309点数解答 | 2024-10-20 21:14:18)251
- 修改 DSP2833x 程序:实现 LED 灯中速→慢速→快速闪烁及特定顺序循环闪烁 (GPT | 1312点数解答 | 2024-10-20 21:14:21)270
- 3ds max 数字化制图技术:破解项目设计难题的利器(字节豆包 | 198点数解答 | 2024-11-05 21:33:01)201
- 3ds Max技术助力项目设计难题化解(阿里通义 | 244点数解答 | 2024-11-05 21:33:59)209
- 3ds Max 数字化制图技术:化解项目设计难题,提升效率与精准度(讯飞星火 | 221点数解答 | 2024-11-05 21:34:31)233