冒泡排序
package com.example.demo;
/**
* 冒泡排序(大的往上冒或者小的往上冒,这里测试前者)
*/
public class Test {
public static void main(String[] args) {
int[] numbers={5,2,3,7,9,6};
//外层循环控制轮数,每一轮比较出本轮的最大值(第一轮冒出整个数组最大的值,第二轮冒出整个数组第二大的值,以此类推..)
//思考:外层循环为什么减1? 比如2个数进行冒泡,第一轮就冒出最大值,剩下的那个数就是最小值;比如3个数进行冒泡,第一轮
//冒出最大值,第二轮冒出第二大的值,剩下的就是最小值.所以N个数进行冒泡时,只需比较N-1轮.
for(int i=0;i<numbers.length-1;i++)
{
//内层循环控制每一轮比较的次数,依次递减1
//思考:为什么内层和外层都有相同的numbers.length-1这部分?为什么还要减i?
//N个数两两相比只要比N-1次,在数值上等于外层.还要减去渐变的i,是因为每比完1轮,都会比出一个最值(第一大,第二大..),
//所以每轮需要比较的次数会递减1.
for(int j=0;j<numbers.length-1-i;j++)
{
//相邻元素两两相比,前一个元素大于后一个元素,就交换位置(大的往后冒)
if(numbers[j]>numbers[j+1])
{
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
System.out.println("显示");
for (int i=0;i<numbers.length;i++){
System.out.println(numbers[i]);
}
}
}