代码如下:
/**
* 冒泡排序,所传参数为引用值,排好序后调用函数地址所指向的数组已修改
* 未考虑待排数组中部分有序情况的优化
* @param numbers 待排序数组
*/
public void bubbleSort(int[] numbers){
System.out.println("冒泡排序前数组:\n" + Arrays.toString(numbers));
int temp;
//外层循环控制遍历的最大下标递减
for(int i=numbers.length-1;i>0;i--){
//内层循环遍历开始下标递增,且最大下标比外层循环当前值小一(循环内用了j+1,当j最大时保证不越界)
for(int j=0;j
//前面数比后面大时,交换位置
if(numbers[j]>numbers[j+1]){
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
//输出排序后结果
System.out.println("冒泡排序后数组:\n" + Arrays.toString(numbers));
}
测试代码:
/**
* 测试函数
* @param args
*/
public static void main(String[] args) {
int[] numbers = new int[10];
//生成随机数组
for(int i=0;i<10;i++){
numbers[i] = (int) (Math.random()*100);
}
//调用排序
new SortAlgorithm().bubbleSort(numbers);
}
测试结果:
冒泡排序前数组:
[30, 96, 7, 48, 36, 36, 84, 77, 3, 78]
冒泡排序后数组:
[3, 7, 30, 36, 36, 48, 77, 78, 84, 96]