#include <iostream>
using namespace std;
const int N = 1010;
int a[N];
void print(int array[], int n){
for(int i = 0; i < n; i ++ ){
cout << array[i];
if(i == n - 1) cout << endl;
else cout << " ";
}
}
// 冒泡排序, 每次确定一个元素的位置(确定最大值)
void bubble_sort(int array[], int l ,int r){
for(int i = 0; i < r - l + 1; i ++ ){ // 次数
for(int j = l; j < r; j ++ ){
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
// 选择排序
void select_sort(int array[], int l, int r){
for(int i = 0; i < r - l + 1; i ++ ){ // 次数
for(int j = l; j < r - i; j ++ ){
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
// 插入排序(一边比较一边移动)
void insert_sort(int array[], int l, int r){
if(l == r) return ;
for(int i = l + 1; i <= r; i ++ ){
if(array[i] < array[i - 1]){ // 保持稳定性
int temp = array[i];
int j = i - 1;
while(j >= l && array[j] > temp) array[j + 1] = array[j], j -- ;
array[j + 1] = temp;
}
}
}
// 折半插入排序(先比较确定插入位置,然后移动)
void insertSort(int array[], int l, int r){
if(l == r) return ;
int left, mid, right;
for(int i = l + 1; i <= r; i ++ ){
if(array[i] < array[i - 1]){
left = l, right = i - 1;
int temp = array[i];
while(left <= right){
mid = left + right >> 1;
if(array[mid] <= temp) left = mid + 1;
else right = mid - 1;
}
int j;
for(j = i - 1; j >= left; j -- ) array[j + 1] = array[j];
array[j + 1] = temp;
}
}
}
// 归并排序(递归实现)
void merge_sort(int array[], int l, int r){
if(l == r) return ;
int backup[l + r + 10];
int mid = l + r >> 1;
merge_sort(array, l, mid);
merge_sort(array, mid + 1, r);
int i, j, k;
i = l, j = mid + 1, k = 0;
while(i <= mid && j <= r){
if(array[i] <= array[j]) backup[k ++ ] = array[i ++ ]; // 保持稳定性
else backup[k ++ ] = array[j ++ ];
}
while(i <= mid) backup[k ++ ] = array[i ++ ];
while(j <= r) backup[k ++ ] = array[j ++ ];
for(i = l, k = 0; i <= r; i ++ ) array[i] = backup[k ++ ];
}
// 快速排序
void quick_sort(int array[], int l, int r){
if(l == r) return ;
int left = l - 1, right = r + 1;
int aim = array[l + r + 1 >> 1]; // 向上取整
while(left < right){
do left ++ ; while(array[left] < aim);
do right -- ; while(array[right] > aim);
if(left < right){
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
quick_sort(a, l, left - 1);
quick_sort(a, left, r);
}
int main(){
int n, l ,r;
cin >> n >> l >> r;
for(int i = 0; i < n; i ++ ) cin >> a[i];
// bubble_sort(a, l, r);
// select_sort(a, l, r);
// insertSort(a, l, r);
// insert_sort(a, l, r);
// merge_sort(a, l, r);
quick_sort(a, l, r);
print(a, n);
return 0;
}
弄个随机数就香。。。。
dalao厉害