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法式設計有所贊助。