思路:每次遍历一遍数组,找到最大值,并记录其下标。然后内循环结束后将其下标对应的值与数组top上的值交换,然后top-1;
public static int[] soft(int[] arr){
for(int top=arr.length-1;top>=0;top--){
int indexOfmax=0;
//将最大值一开始的下标设置为0
int max=arr[0];
//将最大值为数组的第一个数
for(int i=0;i<=top;i++){
if(arr[i]>max){
max=arr[i]; //如果下标为i上的数大于max,则更新max为arr[i]
indexOfmax=i; //保存i下标到indexOfmax中
}
}
//完成一次内循环,找到当前这轮里最大的数
//将arr[top]里的值和arr[indexOfmax]中的值交换。将最大值放到top上
int temp=arr[top];
arr[top]=arr[indexOfmax];
arr[indexOfmax]=temp;
}return arr;
}
测试代码:
public static void main(String[] args){
int[] arr=new int[]{6,9,2,3,3,1,98,76,43,21};
soft(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
运行结果: