陣列:[2,6,3,6,5,9,1]
輸出:[1 2 3 5 6 6 9 ]
private static void paixu(int arrs, int h, int e)
while (arrs[x]< arrs[e])
//交換值
int m;
m = arrs[h];
arrs[h] = arrs[e];
arrs[e] = m; //2,6,3,6,5,9,1
h++; //2,1,3,6,5,9,6
e--; //2,1,3,5,6,9,6
}//遞迴查詢左右兩邊
if (head < e)
if (end > h)
}
為什麼會有h++,e--呢
跟一下**
輸入陣列[2,6,3,6,5,9,1]
第一次執行
中間位置是3,值是6
左邊是0,右邊是6
往下執行
陣列變成[2,1,3,6,5,9,6]
執行加減操作 h=2,e=5;然後開啟第二輪的執行
假如不進行加減操作,
繼續執行的話,左邊繼續判斷,當查詢到6的時候停止,
右邊查詢,查詢到6的時候停止,然後交換,6和6交換,然後再次開啟迴圈,就會死迴圈,
當執行加減操作之後,再次判斷的時候,就會從交換資料之後的索引開始判斷,就不會再次判斷了,
Java排序演算法 快速排序
一.思想 對氣泡排序演算法的一種改進。通過一趟排序將排序的資料分割成兩個部分,其中一部分的所有資料都比另一部分的所有資料都要小,然後再按此方法對這兩部分分別再進行快速排序,依次類推。實現為 開始時先設兩個變數i start,j end 以第乙個元素作為中間點,pivot num i 以j 的形式從後...
java快速排序演算法
package com.head.swift 快速排序 public class main sorts a,0,a.length 1 對陣列a進行公升序排列 輸出陣列 for int i a public static void sorts int a int left int right if i...
演算法 快速排序(Java)
三 快速排序 實現和效率 首先,在這一串數字中挑乙個基準數,作為排序的參考,將大於該基準數的數字放在後面,小於基準數的數字放在前面。然後,這樣一來,一串數字分成了兩部分,左部分都比基準數小,右部分都比基準數大。接著,同樣的方法,再分別從左右部分都挑出乙個基準數,同樣作為排序的參考,同樣將大於該基準數...