对于「冒泡排序」算法,核心是 冒泡。
如何冒泡?也就是说,把数组中最小的那个往上冒,冒的过程就是和他相邻的元素交换。这个冒的过程就是内循环。
第二种写法:
如何冒泡?也就是说,把数组中最小的那个往上冒,冒的过程就是和他相邻的元素交换。这个冒的过程就是内循环。
经过了一个冒的过程,可以使一个最小的元素冒出来,如果数组里面有 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;
}
}
}
}
}