• 排序01-冒泡排序法


    常见的算法题:排序

    排序分为很多种类,最常见的有冒泡排序法,简单排序法,直接插入排序法等几种排序法;

    冒泡排序法,是排序中最简单和最常见的排序法。

    冒泡排序法是将相邻的元素两两进行比对,将逆序的元素进行交换就行。

     时间复杂度:O(n^2)

     代码如下:

    public class BubbleSort {
        public static void main(String[] args) {
    //        int[] arr = {2,8,5,7,3,1,10,11,6};
            int[] arr = {2,3,5,7,8,1,10,11,6};
            System.out.println(Arrays.toString(arr));
            bubbleSort01(arr);
        }
        //通用,用于数据交换
        public static void swap(int[] arr , int i ,int j){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        //冒泡排序法:方法一
        public static void bubbleSort01(int[] arr){
            int i,j;
            boolean flag = true;
            for( i=0 ; i<arr.length && flag ; i++ ){
                flag = false ;//每次都调整成为false,如果一遍遍历后,没有变成true,那说明没有
                for( j=arr.length - 2 ; j > i-1 ; j-- ){
                    if(arr[j] > arr[j+1] ){
                        flag = true;
                        swap( arr , j , j+1 );
                    }
                }
                System.out.println(Arrays.toString(arr));
            }
        }
        //冒泡排序法:方法二
        public static void bubbleSort02(int[] arr){
            int i,j;
            boolean flag = true;
            for( i=1 ; i<arr.length && flag ; i++ ){
                flag = false ;//每次都调整成为false,如果一遍遍历后,没有变成true,那说明没有
                for( j = 0; j < arr.length - i  ; j++ ){
                    if(arr[j] > arr[j+1] ){
                        flag = true;
                        swap( arr , j , j+1 );
                    }
                }
                System.out.println(Arrays.toString(arr));
            }
        }
    }
    第二种冒泡方法遍历为例:

    第一轮排序

     第二轮排序

     第三轮排序

    说明:

    设置标识flag,在每一轮遍历之前,将值设置成false;

    如果进行了交换,设置为true,如果没有则不变(说明剩下的元素是有序的,不用进行排序);

    如果flag为true,则再次进行遍历,否则结束遍历;












  • 相关阅读:
    gulp-rev:项目部署缓存解决方案----gulp系列(六)
    nodemailer实现node发送邮件
    angular项目总结——angular + browserify + gulp + bower + less 架构分享
    作为面试官之后的一些体会
    前端乱炖,总结一些细节点
    webapp,liveapp: 流式布局和rem布局
    canvas剪裁图片并上传,前端一步到位,无需用到后端
    (高德地图)marker定位 bug 解决总结
    gulp-clean----gulp系列(五)
    APUE-文件和目录(一)
  • 原文地址:https://www.cnblogs.com/perferect/p/12292559.html
Copyright © 2020-2023  润新知