考点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)采用降序的方式如何写代码;
原文:https://www.cnblogs.com/maohaitao/p/11319547.html