程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java交流排序之奇偶排序完成辦法

java交流排序之奇偶排序完成辦法

編輯:關於JAVA

java交流排序之奇偶排序完成辦法。本站提示廣大學習愛好者:(java交流排序之奇偶排序完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java交流排序之奇偶排序完成辦法正文


本文實例講述了java交流排序之奇偶排序完成辦法。分享給年夜家供年夜家參考。詳細以下:

奇偶排序,或奇偶換位排序,或磚排序,是一種絕對簡略的排序算法,最後創造用於有當地互連的並行盤算。這是與冒泡排序特色相似的一種比擬排序。

該算法中,經由過程比擬數組中相鄰的(奇-偶)地位數字對,假如該奇偶對是毛病的次序(第一個年夜於第二個),則交流。下一步反復該操作,但針對一切的(偶-奇)地位數字對。如斯瓜代停止下去。

處置器數組的排序

在並行盤算排序中,每一個處置器對應處置一個值,並唯一與閣下鄰人的當地互連。一切處置器可同時與鄰人停止比擬、交流操作,瓜代以奇-偶、偶-奇的次序。該算法由Habermann在1972年最後揭橥並展示了在並行處置上的效力。

該算法可以有用地延長到每一個處置器具有多個值的情形。在Baudet–Stevenson奇巧合並分區算法中,每一個處置器在每步對本身所具有的子數組停止排序,然後與鄰人履行歸並分區或換位歸並。

Batcher奇偶合並排序

Batcher奇偶合並排序是一種相干但更有用率的排序算法,采取比擬-交流和完善-洗牌操作。

Batcher的辦法在具有普遍互連的並行盤算處置器上效力不錯。


最差時光龐雜度 \Theta(n^2)

奇偶排序靜態圖以下所示:

代碼完成:

package com.baobaotao.test; 
/** 
 * 排序研討 
 * 
 */ 
public class Sort { 
  /** 
<span >  </span> * 奇偶排序 
<span >  </span> * @param array 
<span >  </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) ; 
    } 
  } 
  /** 
   * 按從小到年夜的次序交流數組 
   * @param a 傳入的數組 
   * @param b 傳入的要交流的數b 
   * @param c 傳入的要交流的數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 ;  
      } 
    } 
  } 
   
  /** 
   * 打印數組 
   * @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法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved