冒泡排序
/** * (冒泡排序正宗) * @param arr 需要冒泡排序的数组 * @return 排序后的数组 */ public int [] maoPaoPaixu(int arr []){ int num; if(arr!=null){ for(int i = 0;i < arr.length-1;i++){ //i从前往后循环 for (int j = arr.length-2; j >= i; j--) { //j从后往前循环 if(arr[j]>arr[j+1]){ num = arr[j]; arr[j] = arr[j+1]; arr[j+1] = num; } } } } return arr; }
冒泡排序优化
/** * 冒泡排序优化 * @param arr */ public void maoPaoPaiXu01(int arr[]){ int count = 0; if(arr != null && arr.length >1){ int temp = 0; boolean flag = true; //设置一个标记 for (int i = 0; i < arr.length-1 && flag; i++) { flag = false; //进入循环,标记变为false for (int j = arr.length-2; j >= i ; j--) { if(arr[j] > arr[j+1]){ //只要有需要调换位置的,便将标记变为true。当进入不到if判断中时,整个数组就是有序的,flag 变为false,for循环结束 flag = true; temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } }