• 冒泡排序 和 鸡尾酒排序的区别 ?


     一, 冒泡排序 :

    代码如下:

     1 package sort;
     2 /**
     3  * 冒泡排序
     4  * @author DHY
     5  * @creation 2018年5月15日
     6  */
     7 
     8 public class BubbleSort {
     9     
    10         public void bubble(Integer[] data){
    11             
    12             for(int i=0;i<data.length;i++){
    13                 
    14                 for(int j=0;j<data.length-1-i;j++){
    15                     if(data[j]>data[j+1]){   //如果后一个数小于前一个数交换
    16                         int tmp=data[j];
    17                         data[j]=data[j+1];
    18                         data[j+1]=tmp;
    19                     }
    20                 }
    21                 
    22             }
    23             
    24         }
    25     
    26         
    27     /**测试代码*/
    28     public static void main(String[] args) {
    29 
    30              Integer[] list={49,38,65,97,76,13,27,14,10};
    31              //冒泡排序
    32              BubbleSort bs=new BubbleSort();
    33              bs.bubble(list);
    34              
    35              for(int i=0;i<list.length;i++){
    36                  System.out.print(list[i]+" ");
    37              }
    38              System.out.println();
    39         }
    40 
    41     
    42 
    43 }
    View Code


     

    二,鸡尾酒排序:

    与冒泡排序不同的地方

      鸡尾酒排序,即双向的冒泡排序,等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低(有先后顺序,并非同时;大循环下第一个循环是从开始扫到结束,将最大的归到最后;第二个循环是从倒数第二个位置往开始端扫,将最小的归到开始的位置),而冒泡排序则仅仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次只移动一个项目和。   以排序(49,38,65,97,76,13,27,14,10)为例,鸡尾酒排序只要访问一次序列就可以完成排序,但如果使用冒泡排序需要八次。但是在乱数序列的状态下,鸡尾酒排序和冒泡排序的效率都很差。

     代码如下:

     1 package sort;
     2 public class CocktailSort {
     3     /**测试代码*/
     4     public static void main(String args[]) {  
     5 //        int[] numbers={-1, 0, 50, 44, -90};
     6         int[] numbers={49,38,65,97,76,13,27,14,10};
     7         sort(numbers);
     8         for(int number : numbers) { 
     9             System.out.println(number); 
    10         } 
    11     }
    12     /**鸡尾酒排序*/
    13     static void sort(int[] numbers){
    14         int temp;
    15         int m=0,n=numbers.length-1;
    16         while(m<n){
    17             for(int i=m; i<n;i++){
    18                 if(numbers[i]>numbers[i+1]){
    19                     //交换数组中两个数字的位置
    20                     temp=numbers[i];
    21                     numbers[i]=numbers[i+1];
    22                     numbers[i+1]=temp;
    23                 }
    24             }
    25             n--;
    26             for(int i=n; i>m;i--){
    27                 if(numbers[i]<numbers[i-1]){
    28                     //交换数组中两个数字的位置
    29                     temp=numbers[i];
    30                     numbers[i]=numbers[i-1];
    31                     numbers[i-1]=temp;
    32                 }
    33             }
    34             m++;
    35         }    
    36     }
    37 }
    View Code
  • 相关阅读:
    java,jenkins
    docker compose,link,Odoo
    nginx,docker反向代理
    centos7上安装docker-ce社区版
    Install Rancher server
    docker公司测试环境搭建总结
    ansible+docker
    桥接物理网卡,pipwork指定ip,外网连接,研究salt+docker
    20170605
    20170602
  • 原文地址:https://www.cnblogs.com/william-dai/p/9038808.html
Copyright © 2020-2023  润新知