冒泡排序

冒泡排序

/**
 * 冒泡排序: 小的值上浮,大的值下沉 第k边遍历时,不需要考虑最后k-1个元素 {2,9,5,4,8,1}
 * 第一次遍历之后,最后的是最大值,第二次遍历,最后的是第二大值,
 * 注意:如果在某次遍历中没有发生交换,那么不必进行下一次遍历,因为所有的元素已经排序了
 * @param list
 */
private static void bubbleSort(int[] list) {
    boolean needNextPass = true;
    for (int k = 1; k < list.length && needNextPass; k++) {
        // Array may be sorted and next pass not needed
        needNextPass = false;
        for (int i = 0; i < list.length - k; i++) {
            if (list[i] > list[i + 1]) {
                // swap list[i] with list[i+1]
                int temp = list[i];
                list[i] = list[i + 1];
                list[i + 1] = temp;
                needNextPass = true;// next pass still needed
            }
        }

    }
}
public static void main(String[] args) {
    int[] list = {2,9,5,4,8,1};
    System.out.print("排序前:");
    for(int i:list){
        System.out.print("\t"+i);
    }
    System.out.println("\n");
    bubbleSort(list);
    System.out.print("排序后:");
    for(int i:list){
        System.out.print("\t"+i);
    }
}

结果如图:

冒泡排序_第1张图片

你可能感兴趣的:(冒泡排序)