题目
手写一个冒泡排序算法
理解
- 完成一个手写冒泡排序,必须对冒泡排序完全理解,才能信手拈来
- 冒泡,顾名思义,针对每一次排序过程都是一次冒泡
- 每一次冒泡过程都把该数组中最大数字放在数组末尾
思路
- 冒泡排序共进行n次排序过程
- 每次排序过程,从0开始交换数字,把较大的数字交换到后面去
优化
如果某次排序过程,没有发生交换过程,则该数组已完全排序,可以退出!
代码实现
public void bubble(int[] input){
int n=input.length; //表示数组长度和排序次数
boolean flag=true;
while(flag){
flag=false;
//每一次冒泡排序过程
for(int j=1;j<n;j++){
if(input[j-1]>input[j]){
int temp=input[j-1];
input[j-1]=input[j];
input[j]=temp;
flag=true;
}
}
//进行下一次冒泡排序前,要n--
n--;
}
}