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

java交換排序之奇偶排序實現(xiàn)方法

 更新時間:2015年02月12日 10:59:06   作者:Benjamin_whx  
這篇文章主要介紹了java交換排序之奇偶排序實現(xiàn)方法,實例分析了奇偶排序的原理與具體實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下

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

奇偶排序,或奇偶換位排序,或磚排序,是一種相對簡單的排序算法,最初發(fā)明用于有本地互連的并行計算。這是與冒泡排序特點類似的一種比較排序。

該算法中,通過比較數(shù)組中相鄰的(奇-偶)位置數(shù)字對,如果該奇偶對是錯誤的順序(第一個大于第二個),則交換。下一步重復該操作,但針對所有的(偶-奇)位置數(shù)字對。如此交替進行下去。

處理器數(shù)組的排序

在并行計算排序中,每個處理器對應處理一個值,并僅有與左右鄰居的本地互連。所有處理器可同時與鄰居進行比較、交換操作,交替以奇-偶、偶-奇的順序。該算法由Habermann在1972年最初發(fā)表并展現(xiàn)了在并行處理上的效率。

該算法可以有效地延伸到每個處理器擁有多個值的情況。在Baudet–Stevenson奇偶合并分區(qū)算法中,每個處理器在每一步對自己所擁有的子數(shù)組進行排序,然后與鄰居執(zhí)行合并分區(qū)或換位合并。

Batcher奇偶歸并排序

Batcher奇偶歸并排序是一種相關但更有效率的排序算法,采用比較-交換和完美-洗牌操作。

Batcher的方法在擁有廣泛互連的并行計算處理器上效率不錯。


最差時間復雜度 \Theta(n^2)

奇偶排序動態(tài)圖如下所示:

代碼實現(xiàn):

package com.baobaotao.test; 
/** 
 * 排序研究 
 * 
 */ 
public class Sort { 
  /** 
<span style="white-space:pre">  </span> * 奇偶排序 
<span style="white-space:pre">  </span> * @param array 
<span style="white-space:pre">  </span> */ 
  public static void batcherSort(int[] array) { 
    int length = array.length ; 
    boolean flag = true ; 
    while(true) { 
      flag = true ; 
      for(int i=1;i<length-1;i+=2) { 
        if(array[i] > array[i+1]) { 
          swap(array, i, i+1) ; 
          flag = false ; 
        } 
      } 
      for(int i=0;i<length-1;i+=2) { 
        if(array[i] > array[i+1]) { 
          swap(array, i, i+1) ; 
          flag = false ; 
        } 
      } 
      if(flag) 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} ; 
    batcherSort(number) ; 
  } 
}

輸出分析:

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

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

相關文章

最新評論

遂平县| 丹阳市| 乐至县| 富阳市| 昂仁县| 凌海市| 镇江市| 青田县| 东乡县| 新田县| 民权县| 景泰县| 南安市| 汉沽区| 鹤庆县| 西安市| 南宁市| 临泉县| 武川县| 额济纳旗| 丹江口市| 阜南县| 都兰县| 湘潭市| 浙江省| 镇坪县| 许昌县| 育儿| 咸宁市| 钦州市| 临江市| 平顶山市| 循化| 化德县| 永德县| 梅河口市| 堆龙德庆县| 华亭县| 安宁市| 云南省| 临沧市|