zoukankan      html  css  js  c++  java
  • 冒泡排序 和 鸡尾酒排序的区别 ?

     一, 冒泡排序 :

    代码如下:

     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
  • 相关阅读:
    什么是ORM
    ORM优缺点
    Azure 中快速搭建 FTPS 服务
    连接到 Azure 上的 SQL Server 虚拟机(经典部署)
    在 Azure 虚拟机中配置 Always On 可用性组(经典)
    SQL Server 2014 虚拟机的自动备份 (Resource Manager)
    Azure 虚拟机上的 SQL Server 常见问题
    排查在 Azure 中新建 Windows 虚拟机时遇到的经典部署问题
    上传通用化 VHD 并使用它在 Azure 中创建新 VM
    排查在 Azure 中新建 Windows VM 时遇到的部署问题
  • 原文地址:https://www.cnblogs.com/william-dai/p/9038808.html
Copyright © 2011-2022 走看看