3.简单排序之冒泡排序

简单排序有:1.冒泡排序。2.选择排序。3.插入排序。


原理:

 1.假设数组有n个数据。
 2.第1轮我们从下标0开始遍历,比较当前元素和相邻下一个元素大小,如果当前元素小于下一个元素,把当前元素和下一个元素替换位置,当遍历完下标为n-2的元素时,那么数组中最小的值就放到了数组的末尾,即下标为n-1的位置。第一轮遍历次数为n-1次。
 3.开始第二轮遍历,依旧从下标0开始遍历,比较当前元素和响铃下一个元素大小,如果当前元素小于下一个元素,把当前元素和下一个元素替换位置,当遍历完到下标为n-3时,数组中第二小的元素就放到了数组倒数2,也就是小标为n-2的位置,结束第二轮遍历。第二轮遍历次数为n-2次。
 4.当遍历到第n-1轮,遍历完下标为0的元素,数组中最大的值就放在了下标为0的位置。第n-1轮遍历次数为1次。

代码实现

package china.guo.calc.simplesort;

import java.util.Arrays;

//冒泡排序
public class Bubble {

    //排序
    public static void sort(Comparable[] array) {
        for (int i = array.length-1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (greater(array[j],array[j+1])){
                    exchange(array,j,j+1);
                }
            }
        }

    }

    //比较c1和c2大小
    public static boolean greater(Comparable c1,Comparable c2){
        return c1.compareTo(c2)>0;
    }

    //交换索引i和索引j处的元素位置
    public static void exchange(Comparable[] array,int i,int j){
        Comparable temp;
        temp = array[i];
        array[i]=array[j];
        array[j]=temp;
    }

    public static void main(String[] args) {
        Integer[] array = new Integer[]{4,5,3,6,1,2};
        sort(array);
        System.out.println(Arrays.toString(array));
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容