onlyxue

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  31 随笔 :: 0 文章 :: 0 评论 :: 2399 阅读
public class ArrayDome7 {

    /*
        冒泡拍寻是最为出名的排序算法之一,总共又八大paixu
        冒泡排序的代码是:两层循环,外层冒泡轮数,里层依次比较
        时间复杂度为O(n2)
        如何优化呢?
            优化想法1:如果原数组中存在相同的数字就不需要比较了
           那么可以少比较一次
     */

    public static void main(String[] args) {

        int[] a = {123,345,234,576,23,4646};
        int[] b = sort(a);
        System.out.println(Arrays.toString(b));

    }

    public static int[] sort(int[] array){
        /*
            1、比较数组中相邻的两个元素,如果二者有大小则交换
            2、每一次比较,都会比较出最大或者最小,那么下一轮可以少比较一次
            3、依次循环,直到结束

         */

        //用来存放数据元素的临时变量
        int temp = 0;

        //外层循环,判断一个数组总共要比较大小多少次
        for (int i = 0; i < array.length-1; i++) {

            boolean flag = false;//通过标志控制循环

            //内层循环,判断上一次比较完还需要比较多少次
            for (int j = 0; j < array.length-1-i; j++) {
                //比较数据元素的大小,如果后一个数比前一个大 则交换位置
                if (array[j+1]>array[j]){
                    temp = array[j+1];
                    array[j+1] = array[j];
                    array[j] = temp;
                    flag = true; //当两个元素进行了比较 那么两个元素不相同 为真
                }
            }
            if(flag==false){ //如果两个元素相同就不会进行上面的比较 flag的值不变
                break; //结束本次循环
            }
        }
        return array;
    }


}
posted on   守望在路上  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示