给定一个长度为n的数组a以及两个整数 l 和 r,请你编写一个函数,void sort(int a[], int l, int r),将a[l] ~ a[r]从小到大排序。
输出排好序的数组a。
输入格式:
第一行包含三个整数n,l,r。0≤l≤r<n≤1000
第二行包含n个整数,表示数组a。
输出格式:
共一行,包含n个整数,表示排序完成后的数组a。
输入样例:
5 2 4
4 5 1 3 2
输出样例:
4 5 1 2 3
这里我用到的排序是冒泡排序,如果有不太理解冒泡排序的,可以看一下这篇文章
然后,再来看一下题目就能理解怎么解决这题选择排序了,代码如下:
import java.util.*;
public class test01 {
// 用冒泡排序
static int[] sortArr(int[] a,int l,int r){
// i表示的是要排多少个数
for(int i=0;i<r-l+1;i++){
// j的作用是把数组(length-i)中的最大数放到最后面
for(int j=l;j<r-i;j++){
if(a[j]>a[j+1]){
int x=a[j+1];
a[j+1]=a[j];
a[j]=x;
}
}
}
return a;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
// n:数组长
int n=sc.nextInt();
int l=sc.nextInt();
int r=sc.nextInt();
int[] a=new int[n];
for (int i=0;i<n;i++){
a[i]=sc.nextInt();
}
int[] b=sortArr(a,l,r);
for (int obj:b){
System.out.print(obj+" ");
}
}
}
分析:
理解冒泡排序的方法,其中就是换位的范围的含义