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