链接:
链接
题目:
给定一个长度为 nn 的数组 aa 以及两个整数 ll 和 rr,请你编写一个函数,
void sort(int a[], int l, int r)
,将 a[l]∼a[r]a[l]∼a[r] 从小到大排序。输出排好序的数组 aa。
输入格式
第一行包含三个整数 n,l,rn,l,r。
第二行包含 nn 个整数,表示数组 aa。
输出格式
共一行,包含 nn 个整数,表示排序完成后的数组 aa。
数据范围
0≤l≤r<n≤10000≤l≤r<n≤1000
输入样例:
5 2 4 4 5 1 3 2
输出样例:
4 5 1 2 3
思路:
使用双指针,遍历所有元素,使用另一个循环,从该元素的下一个元素开始遍历,只要大小顺序不符合要求,就交换这两个元素,比如说按照从小到大的顺序,可以保证左边的元素一直小于右边的元素,其实应该是一个代码模板,好好记住就好了
代码:
#include<iostream> #include<algorithm> using namespace std; const int N=1100; int a[N]; void sort(int a[],int l,int r) { for(int i=l;i<=r;i++) { for(int j=i+1;j<=r;j++) { if(a[i]>a[j]) swap(a[i],a[j]); } } } int main() { int n,l,r; cin>>n>>l>>r; for(int i=0;i<n;i++) cin>>a[i]; sort(a,l,r); for(int i=0;i<n;i++) cout<<a[i]<<" "; return 0; }