原理分析
冒泡排序原理简单来说就是依次将相邻两个数作比较,如果前一个数大于后一个数就交换位置,这样第一轮下来,就能保证最后一个数是所有数中最大的,这个数就不必参加下一轮的比较;然后第二轮过后,倒数第二个数就变成了第二大的,同样也不参与下一轮的比较...以此类推,这样每次把大数都放到后面,就像冒泡一样
举例说明
举个例子,我们按冒泡排序原理比较这几个数:2,3,5,6,1
过程为
第1轮比较后:2 3 5 1 6
第2轮比较后:2 3 1 5 6
第3轮比较后:2 1 3 5 6
第4轮比较后:1 2 3 5 6
程序实现
程序实现也很简单,由上面举例可得知,n个数排序,共需进行n-1轮排序,第i轮需要比较的次数为n-i次,这样我们就可以用循环嵌套来实现,外层控制循环几轮,内层控制比较次数,程序如下
for(int i=0;i<numbers.length-1;i++) {
for(int j=0;j<numbers.length-1-i;j++) { //-1为了防止溢出
if(numbers[j] > numbers[j+1]) {
int temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}