zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序

    冒泡排序是最为出名的排序算法之一,总共有八大排序

    冒泡排序有两层循环,外层是冒泡理轮数,里层依次比较;该算法的时间复杂度为O(n^2)

    基本步骤

    1.比较数组中两个相邻的元素,如果第一个数比第二个数答,我们交换他们的位置
    2.每一次比较,都会产生一个最大,或者最小的数字
    3.下一轮则可以少一次排序
    4.依次循环直到结束

    具体实现

    public class ArrayDemo {
       public static void main(String[] args) {
           int[] a={1,5,20,6,50,19,32};
           int[] sort = sort(a);
           System.out.println(Arrays.toString(sort));

      }
       //1.比较数组中两个相邻的元素,如果第一个数比第二个数答,我们交换他们的位置
       //2.每一次比较,都会产生一个最大,或者最小的数字
       //3.下一轮则可以少一次排序
       //4.依次循环直到结束

       public static int[] sort(int[] array){
           int temp=0;
           //外层循环:判断我们要走多少次
           for (int i = 0; i <array.length-1 ; i++) {
               //内层循环:比较判断的两个数,如果第一个数比第二个数大,则交换位置
               for (int j = 0; j < array.length-1-i; j++) {
    //               if(array[j+1]<array[j]){
                   if(array[j+1]>array[j]){
                       temp=array[j];
                       array[j]=array[j+1];
                       array[j+1]=temp;
                  }
              }
          }
           return array;
      }
    }

    优化

    设置一个flag=false;可以减少没有意义的比较

        public static int[] sort(int[] array){
           int temp=0;
           //外层循环:判断我们要走多少次
           for (int i = 0; i <array.length-1 ; i++) {

               boolean flag=false;//通过flag标识位减少没有意义的比较
               //内层循环:比较判断的两个数,如果第一个数比第二个数大,则交换位置
               for (int j = 0; j < array.length-1-i; j++) {
    //               if(array[j+1]<array[j]){
                   if(array[j+1]>array[j]){
                       temp=array[j];
                       array[j]=array[j+1];
                       array[j+1]=temp;
            flag=true;//经过if语句将flag设置为true
                  }
              }
               if(false==false){//如果flag为false,说明没有经过if判断,说明排序已经排好,跳出循环
                   break;
              }
          }
           return array;
      }

     

  • 相关阅读:
    Silverlight+WCF 新手实例 象棋 介绍四(三十一)
    python 抓包(转)
    Python字符集编码和文件读写 [转]
    python操作Excel读写使用xlrd(转)
    Wing IDE 中文显示方法
    Python使用win32gui.SetWindowPos置顶窗口(转)
    python url格式解析(转)
    TCP/IP 某些最常见的错误原因码 (errno)列表(转)
    WinPcap过滤串表达式的语法
    python读取注册表值(转)
  • 原文地址:https://www.cnblogs.com/bxbo/p/13453173.html
Copyright © 2011-2022 走看看