描述
有一个长度为7的无序数组,按照从小到大的顺序排序后输出。
输入描述:
数组中的数据
输出描述:
数组中数据排序后输出
示例1:
输入:
13 11 9 7 5 3 1
输出:
1 3 5 7 9 11 13
算法思想:
冒泡排序:
排序序列从前向后(从下标较小的元素开始),依次对相邻两个元素的值进行两两比较,若发现逆序则交换,使值较大的元素逐渐从前移向后部。
第一轮排序:
找到了该数组中最大值放在了末端,所以一个元素已经有序,现在第二轮排序,只需要将前面的进行排序。
以此类推:
第三轮排序:
第四轮排序:
第五轮排序:
第六轮排序:
总结:每一轮排序都可以让一个元素在有序的位置上,i个元素进行排序,需要进行i-1轮的排序。
代码展示:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[7];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
scanner.close();
boolean flag=false;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
//进入循环判断
flag=true;
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
//这一轮没有进行排序,说明已经是有序,则终止循环
if(!flag){
break;
}
}
for (int k = 0; k < arr.length; k++) {
System.out.print(arr[k]+" ");
}
}
}
这里使用了flag来判断是否排序过程中,该数组已经有序,提前结束排序,这样排序效率更高。