相邻的两个数逐个的作比较,如果前一个数比后一个数小那么就交换过来,当第一轮交换完毕之后最小的值一定产生在末尾。
class Demo6{ public static void main(String[] args){ int[] scores = {90, 98, 80, 89, 60}; //在主函数里调用方法printArray先输出未排序之前的数组的值 printArray(scores); System.out.println(); //在主函数里调用orderArray方法对数组进行冒泡排序 orderArray(scores); //输出排序之后的数组 printArray(scores); } //定义一个冒泡排序的方法 public static void orderArray(int[] array){ //利用外层循环控制需要比较的是几轮 for(int i = 0; i < array.length - 1; i++){ //利用内层循环控制每轮需要比较多少次 for(int j = 0; j < array.length - i -1; j++){ //这时比较数组里的前一位数和后一位数的大小 if(array[j+1] > array[j]){ //如果后一位数大于前一位数则进行交换 //定义一个变量来接收后一位数的数值 int temp = array[j+1]; //此时把前一位较小的数值赋给array[j+1] array[j+1] = array[j]; //然后把变量temp里较大的数值赋给array[j] array[j] = temp; //此时已经完成了冒泡排序 } } } } //定义一个方法用来打印出该数组 public static void printArray(int[] array){ for(int i = 0; i< array.length; i++){ System.out.print(array[i]+" "); } } }
另(注释):
class Demo3{ public static void main(String[] args){ //定义一个数组 int[] scores = {90,80,79,93,78,61}; printArray(scores); System.out.println(); orderArray(scores); printArray(scores); } public static void orderArray(int[] array){ //外层循环控制需要比较的是几轮 for(int i = 0; i < array.length-1; i++){ //内层循环控制的是每一轮需要比较几次 for(int j = 0; j < array.length-i-1; j++){ //对数组里相邻的两个数进行比较,如果后一位数大于前一位数,则发生交换 if(array[j+1] > array[j]){ //先定义一个变量用来存储数组里相邻的两个数里的后一位数字 int temp = array[j+1]; //如果能够进入循环里则说明后一位数大于前一位数,此时将前一位数的值赋给后一位 array[j+1] = array[j]; //然后把temp里大的那个值传给array[j] array[j] = temp; } } } } public static void printArray(int[] array){ for(int i = 0; i < array.length; i++){ System.out.print(array[i]+" "); } } }