经过了一个冒的过程,可以使一个最小的元素冒出来,如果数组里面有 n 个元素,就得冒 n-1 次,这就是外循环。
假设有数组 array = {10,9,8,7,6,5,4,3,2,1}
则数组长度length = 10 外层循环需要循环10 - 1 = 9次 i = 0, 所以循环条件为 i < length - 1
内层循环相邻的两个元素比较,即j 和j+1进行比较,符合条件就交换,j+1<length,所以j<length - 1;由于外循环每循环一次,就有
一个最值出来(可以是最大值也可以是最小值),这个最值可以排除出去,所以内层循环条件为 j<length - 1 -i
第一种写法:
package cn.xiaoshan.oop.sort; import java.util.Arrays; public class testsort { public static void main(String[] args) { int arr[] = {8,4,5,7,2,10,6,9,1,3}; sort(arr); System.out.println(Arrays.toString(arr)); } public static void sort(int array[]){ int i,j; for(i = 0;i<array.length - 1;i++){ for(j = 0;j<array.length - 1 - i;j++){ if(array[j] > array[j+1]){ int temp; temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } } 第二种写法:
package cn.xiaoshan.oop.sort; import java.util.Arrays; public class testsort { public static void main(String[] args) { int arr[] = {8,4,5,7,2,10,6,9,1,3}; sort(arr); System.out.println(Arrays.toString(arr)); } public static void sort(int array[]){ int i,j; for(i = 0; i<array.length - 1; i++){ for(j =array.length - 1; j> i; --j){ if(array[j] < array[j - 1]){ int temp; temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; } } } } }