java 交換排序演算法之二

2021-08-30 04:00:32 字數 1387 閱讀 6426

//(將陣列的第乙個數作為中間值爾後找出陣列中所有比這個中間值(通過迴圈將值小的與值大的分別進行交換)小的數放在左邊,比這

//個中間值大的數放在右邊依次下去直至順序完全正確)

public class quicksorttest ,先找到第乙個數--53,把它作為中間值,

* 也就是說,要把53放在乙個位置,使得它左邊的值比它小,右邊的值比它大。 ,這樣乙個陣列的排序就變成了兩個小陣列的排序

* 即53左邊的陣列和53右邊的陣列,而這兩個陣列繼續用同樣的方式繼續下去,一直到順序完全正確。

* 快速排序說到底是從各自兩端(不含兩端)向中間查詢及相互碰頭後取出low(左邊的一方)作為中間數的地標從

* 而分成以中間數為地界的左右兩個陣列,而這兩個陣列再依次繼續用同樣的方式繼續下去,一直到順序完全正確

*/public static void main(string args) ;

int array = ;//

quicksorttest qst = new quicksorttest();

qst.quicksort(array, 0, 9);

for (int i = 0; i < array.length; i++) }/*

* n就是將進行快速排序的陣列,left和right是你陣列被排序的左界和右界. 如果要排序上面那個陣列,那麼left和right分別0,9

*/void quicksort(int n, int left, int right) ;

quicksort(n, left, dp - 1);// 邊界左邊的陣列(邊界點除外)//4,7

// 這兩個就是遞迴呼叫,分別整理53左邊的陣列和右邊的數

quicksort(n, dp + 1, right);// 邊界左邊的陣列(邊界點除外)//4,}}

/*** @param n 被排序的陣列

* @param left 開始排序陣列的左下標(index)

* @param right 開始排序陣列的右下標

* @return 中間數的座下標

*/int partition(int n, int left, int right) ;; //

while (low + 1 != high) else if (n[high - 1] > pivot) else

// // 第一次取出中間數地標的結果

system.out.println("");

}n[left] = n[low];

n[low] = pivot;

populate(n);

// system.out.print("low point="+low+" high point="+high);

return low;

}void populate(int n) }}

排序演算法(二)交換排序

應用交換排序基本思想的主要排序方法有 氣泡排序和快速排序。一.氣泡排序 小數上浮,大數下沉 將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r 凡掃瞄到違反本原則的輕氣泡,就使其向上 飄浮 如此反覆進行,直到...

排序演算法(二)交換排序

根據序列中兩個元素的關鍵字的大小比較結果交換兩個元素在序列中的位置 1 氣泡排序 基本思想 從前往後或者從後往前兩兩比較相鄰元素的值,如果為逆序 與事先規定順序 遞增 遞減相反 交換兩個數的位置,從第一對到最後一對均完成交換,稱為一次冒泡,它會將整個序列裡最小的或者最大的元素換到第乙個或者最後乙個位...

交換排序演算法

快速排序 為啥叫快速排序,因為速度快,效率高 1.先找乙個數作為基準。作為基準的這個數,一趟排下來,左邊的數必小於它,右邊的數必大於它,也就是說,它找到了自己的位置。2.將兩個指標i,j分別指向表的起始 基準 和最後的位置。3.比較j指標的數字是否小於基準,j 直到j小於基準,交換位置 4.比較i指...