最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java交換排序之雞尾酒排序實現(xiàn)方法

 更新時間:2015年02月12日 10:51:51   作者:Benjamin_whx  
這篇文章主要介紹了java交換排序之雞尾酒排序實現(xiàn)方法,實例分析了排序的原理與相關的實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了java交換排序之雞尾酒排序實現(xiàn)方法。分享給大家供大家參考。具體如下:

雞尾酒排序,也就是定向冒泡排序, 雞尾酒攪拌排序, 攪拌排序 (也可以視作選擇排序的一種變形), 漣漪排序, 來回排序 or 快樂小時排序, 是冒泡排序的一種變形。此算法與冒泡排序的不同處在于排序時是以雙向在序列中進行排序。

與冒泡排序不同的地方:
雞尾酒排序等于是冒泡排序的輕微變形。不同的地方在于從低到高然后從高到低,而冒泡排序則僅從低到高去比較序列里的每個元素。他可以得到比冒泡排序稍微好一點的效能,原因是冒泡排序只從一個方向進行比對(由低到高),每次循環(huán)只移動一個項目。

以序列(2,3,4,5,1)為例,雞尾酒排序只需要訪問一次序列就可以完成排序,但如果使用冒泡排序則需要四次。 但是在亂數(shù)序列的狀態(tài)下,雞尾酒排序與冒泡排序的效率都很差勁。


最差時間復雜度  O(n^2)
最優(yōu)時間復雜度 O(n)
平均時間復雜度   O(n^2)

雞尾酒排序動態(tài)圖如下:

代碼分析:

package com.baobaotao.test; 
/** 
 * 排序研究 
 * 
 */ 
public class Sort { 
   
  /** 
   * 經(jīng)典雞尾酒排序 
   * @param array 傳入的數(shù)組 
   */ 
  public static void cocatailSort(int[] array) { 
    int length = array.length ; 
    //來回循環(huán)length/2次 
    for(int i=0;i<length/2;i++) { 
      for(int j=i;j<length-i-1;j++) { 
        if(array[j] > array[j+1]) { 
          swap(array, j, j+1) ; 
        } 
      } 
      for(int j=length-i-1;j>i;j--) { 
        if(array[j] < array[j-1]) { 
          swap(array, j-1, j) ; 
        } 
      } 
      printArr(array) ; 
    } 
  } 
   
  /** 
   * 雞尾酒排序(帶標志位) 
   * @param array 傳入的數(shù)組 
   */ 
  public static void cocatailSortFlag(int[] array) { 
    int length = array.length ; 
    boolean flag1,flag2 = true ; 
    //來回循環(huán)length/2次 
    for(int i=0;i<length/2;i++) { 
      flag1 = true ; 
      flag2 = true ; 
      for(int j=i;j<length-i-1;j++) { 
        if(array[j] > array[j+1]) { 
          swap(array, j, j+1) ; 
          flag1 = false ; 
        } 
      } 
      for(int j=length-i-1;j>i;j--) { 
        if(array[j] < array[j-1]) { 
          swap(array, j-1, j) ; 
          flag2 = false ; 
        } 
      } 
      if(flag1 && flag2) { 
        break ; 
      } 
      printArr(array) ; 
    } 
  } 
   
  /** 
   * 按從小到大的順序交換數(shù)組 
   * @param a 傳入的數(shù)組 
   * @param b 傳入的要交換的數(shù)b 
   * @param c 傳入的要交換的數(shù)c 
   */ 
  public static void swap(int[] a, int b, int c) { 
    int temp = 0 ; 
    if(b < c) { 
      if(a[b] > a[c]) { 
        temp = a[b] ; 
        a[b] = a[c] ; 
        a[c] = temp ;  
      } 
    } 
  } 
   
  /** 
   * 打印數(shù)組 
   * @param array 
   */ 
  public static void printArr(int[] array) { 
    for(int c : array) { 
      System.out.print(c + " "); 
    } 
    System.out.println(); 
  } 
   
  public static void main(String[] args) { 
    int[] number={11,95,45,15,78,84,51,24,12} ; 
    int[] number2 = {11,95,45,15,78,84,51,24,12} ; 
    cocatailSort(number) ; 
    System.out.println("*****************"); 
    cocatailSortFlag(number2) ; 
  } 
}

結果分析:

11 12 45 15 78 84 51 24 95  
11 12 15 24 45 78 51 84 95  
11 12 15 24 45 51 78 84 95  
11 12 15 24 45 51 78 84 95  
***************** 
11 12 45 15 78 84 51 24 95  
11 12 15 24 45 78 51 84 95  
11 12 15 24 45 51 78 84 95  

可見雞尾酒排序排序的次數(shù)比普通冒泡排序要少很多。只需要4次,用了改進版的標志位雞尾酒排序僅需要3次就可以完成排序。

希望本文所述對大家的java程序設計有所幫助。

相關文章

  • java使用common-httpclient包實現(xiàn)post請求方法示例

    java使用common-httpclient包實現(xiàn)post請求方法示例

    這篇文章主要給大家介紹了關于java使用common-httpclient包實現(xiàn)post請求的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • mybatis 字段名自動轉小寫的實現(xiàn)

    mybatis 字段名自動轉小寫的實現(xiàn)

    這篇文章主要介紹了mybatis 字段名自動轉小寫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Java中Vector與ArrayList的區(qū)別詳解

    Java中Vector與ArrayList的區(qū)別詳解

    本篇文章是對Java中Vector與ArrayList的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • 舉例講解Java的Spring框架中AOP程序設計方式的使用

    舉例講解Java的Spring框架中AOP程序設計方式的使用

    這篇文章主要介紹了Java的Spring框架中AOP程序設計方式的使用講解,文中舉的AOP下拋出異常的例子非常實用,需要的朋友可以參考下
    2016-04-04
  • druid?return行為方法源碼示例解析

    druid?return行為方法源碼示例解析

    這篇文章主要為大家介紹了druid?return行為源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • java中url任意跳轉漏洞的解決

    java中url任意跳轉漏洞的解決

    URL任意跳轉漏洞是一種安全漏洞,它發(fā)生在應用程序沒有正確地驗證目標URL,允許攻擊者將用戶重定向到惡意網(wǎng)站,本文就來介紹一下漏洞的解決修復方案,感興趣的可以了解一下
    2024-06-06
  • java實現(xiàn)輕量型http代理服務器示例

    java實現(xiàn)輕量型http代理服務器示例

    這篇文章主要介紹了java實現(xiàn)輕量型http代理服務器示例,需要的朋友可以參考下
    2014-04-04
  • SpringBoot中的聲明式事務+切面事務+編程式事務詳解

    SpringBoot中的聲明式事務+切面事務+編程式事務詳解

    這篇文章主要介紹了SpringBoot中的聲明式事務+切面事務+編程式事務詳解,事務管理對于企業(yè)應用來說是至關重要的,當出現(xiàn)異常情況時,它也可以保證數(shù)據(jù)的一致性,需要的朋友可以參考下
    2023-08-08
  • Mybatis中typeAliases標簽和package標簽使用

    Mybatis中typeAliases標簽和package標簽使用

    這篇文章主要介紹了Mybatis中typeAliases標簽和package標簽使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 基于Java編寫一個實用的ExcelUtil工具類

    基于Java編寫一個實用的ExcelUtil工具類

    在項目中經(jīng)常遇到excel表格導入導出功能,每次都要重復寫有關excel 的邏輯,所以本文直接使用Java編寫一個實用的ExcelUtil工具類,希望對大家有所幫助
    2024-04-04

最新評論

金溪县| 绥中县| 玉山县| 新宁县| 苏尼特左旗| 阿拉善右旗| 阜新市| 永登县| 浦县| 宁都县| 商南县| 平阴县| 台北市| 蒙自县| 陆良县| 调兵山市| 措勤县| 怀柔区| 旺苍县| 墨脱县| 蛟河市| 房产| 仪陇县| 丘北县| 内黄县| 吴江市| 黄浦区| 沁源县| 乐山市| 腾冲县| 林州市| 曲水县| 达孜县| 公主岭市| 井冈山市| 霍山县| 澎湖县| 兴仁县| 泰州市| 镇江市| 墨玉县|