排序算法之冒泡排序
考点1:交换两个数,不借助第三个变量,使用异或操作,异或规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
考点2:冒泡排序的原理:从左往右两两比较大小,小的放左边,每次循环找出当前趟的最大值,再比较这个数之前的序列,一直循环到只有两个数字,比较完这两个数的大小之后,冒泡排序结束;
上代码:
package sort;
import org.junit.Test;
/**
* @ClassName: BubbleSort
* @Description: 冒泡排序
* 原理:从左往右两两比较大小,小的放左边,每次
* 循环找出当前趟的最大值,再比较这个数之前的序
* 列,一直循环到只有两个数字,比较完这两个数的
* 大小之后,冒泡排序结束;
* @Author: hunterm
* @Date: 2019/8/8 9:36
* @Version: 1.0
*/
public class BubbleSort {
@Test
public void test(){
int[] array = {5,6,2,0,3,99,5,52,31,1,4};
int[] bub = new BubbleSort().bubble(array);
for(int i = 0;i < bub.length;i++){
System.out.println(bub[i]);
}
}
public int[] bubble(int[] array){
for(int i = 0;i < array.length-1;i++){
for(int j = 0;j < array.length-i-1;j++) {
if (array[j] > array[j + 1]) {
array[j] = array[j] ^ array[j + 1];
array[j + 1] = array[j] ^ array[j + 1];
array[j] = array[j] ^ array[j + 1];
}
}
}
return array;
}
}
总结:不要背代码,只要你明白原理之后,各种方式都可以写出来,比如:1)每次循环找出序列中最小的数放在最前面,知道比较完最后两个数字的大小之后,冒泡结束;2)采用降序的方式如何写代码;
浙公网安备 33010602011771号