快速排序的工作原理是通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。
请编写代码,完成 排序,对给定数据进行升序排列。
输入描述
第一行,数字 𝑁 (2≤𝑁≤100)N (2≤N≤100) ,表示待排序的元素个数。
第二行,待排序的元素。
输出描述
输出一行,为升序序列。
输入输出样例
示例
输入
6
7 1 4 8 5 2
输出
1 2 4 5 7 8
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
-
#include <iostream> #include <vector> #include <algorithm> using namespace std; // 快速排序算法实现 void quickSort(vector<int>& arr, int left, int right) { if (left < right) { int pivot = arr[left + (right - left) / 2]; // 选择中间元素作为基准 int i = left; int j = right; // 分区过程 while (i <= j) { // 从左边查找比基准大的元素 while (arr[i] < pivot) { i++; } // 从右边查找比基准小的元素 while (arr[j] > pivot) { j--; } if (i <= j) { swap(arr[i], arr[j]); // 交换两个元素 i++; j--; } } // 递归调用,对左右两部分进行排序 if (left < j) { quickSort(arr, left, j); } if (i < right) { quickSort(arr, i, right); } } } int main() { int N; cin >> N; // 读取元素个数 vector<int> elements(N); // 创建存储元素的向量 // 读取元素 for (int i = 0; i < N; i++) { cin >> elements[i]; } // 调用快速排序 quickSort(elements, 0, N - 1); // 输出排序结果 for (int i = 0; i < N; i++) { cout << elements[i]; if (i < N - 1) { cout << " "; // 输出时元素之间加空格 } } cout <<endl; return 0; }