/**
*蹇熸帓搴忕畻娉曠殑搴旂敤
蹇熸帓搴忕畻娉曟瘮鍐掓場鎺掑簭綆楁硶鐨勬晥鐜囨洿楂橈紝瀹冩瘡嬈¢兘瑕佺‘瀹氱涓涓笅鏍囨暟瀛楃殑浣嶇疆錛屾祦紼嬪浘濡備笅鎵紺猴細錛圥152錛?BR>鏈緥搴旂敤鍒扮殑鐭ヨ瘑濡備笅錛?BR>錛?錛夈傛暟緇勭殑鍒涘緩
錛?錛夈傛暟緇勭殑璁塊棶
錛?錛夈傚揩閫熸帓搴忕畻娉?BR>*/
public class QuickSort
{
/**涓繪柟娉?/SPAN>*/
public static void main(String[] args)
{
int[] nums = {27,8,57,9,23,41,65,19,0,1,2,4,5};//澹版槑涓緇存暟緇勫茍鍒濆鍖?/SPAN>
System.out.println("璇ユ暟緇勭殑闀垮害涓猴細" + nums.length);
System.out.println("*************************************************");
quickSort(nums,0,nums.length-1);//搴旂敤蹇熸帓搴忕畻娉?/SPAN>
System.out.println("*************************************************");
System.out.println("宸茬粡璧板嚭quickSort鏂規(guī)硶錛屽茍涓斾笅闈㈠湪涓葷▼搴忎腑鏄劇ず鏈鍚庣粨鏋?/SPAN>");
for(int i = 0; i < nums.length; i++)//鏄劇ず鎺掑簭鍚庣殑鏁扮粍
{
System.out.print(nums[i] + ",");
}
}
/**蹇熸帓搴忕畻娉?/SPAN>*/
public static void quickSort(int[] a,int low0, int hig0)//瀹炲弬涓簈uickSort(nums, 0, 12)
{
int low=low0;//low0 = 0
int hig=hig0;//hig0 = 12
if(low >= hig)//鏉′歡鎴愮珛鏃惰〃紺哄凡緇忔帓搴忓畬姣?/SPAN>
return;
//transfer鏄‘瀹氭寚閽堟柟鍚戠殑閫昏緫鍙橀噺
boolean transfer = true;//榛樿鏄笅鏍囨寚閽堜粠鍚庡悜鍓嶇Щ鍔?/SPAN>
while(low != hig)
{
if(a[low] > a[hig])
{
//浜ゆ崲鏁板瓧
int temp = a[low];
a[low] = a[hig];
a[hig] = temp;
//鍐沖畾涓嬫爣縐誨姩錛岃繕鏄笂鏍囩Щ鍔?/SPAN>
transfer = (transfer == true) ? false : true;//榪欓噷絎竴嬈℃眰鐨則ransfer涓篺alse
}
//灝嗘寚閽堝悜鍓嶆垨鑰呭悗縐誨姩
if(transfer)
{hig--;}//鎸囬拡鍚戝墠縐誨姩
else
{low++;}//鎸囬拡鍚戝悗縐誨姩
//鏄劇ず姣忎竴嬈℃寚閽堢Щ鍔ㄧ殑鏁扮粍鏁板瓧鐨勫彉鍖?/SPAN>
for(int i = 0; i < a.length; i++)
{
System.out.print(a[i] + ",");
}
System.out.print(transfer + ",");
//姝ゆ椂low = 1, hig = 12
System.out.println(" (low,hig) =" + "(" + low + "," + hig + ")");
}//閫鍑簑hile寰幆鏃秎ow == high == 9
//灝嗘暟緇勫垎寮涓ゅ崐閲嶆柊璋冪敤quickSort()鍚勮嚜蹇熸帓搴忥紝紜畾姣忎釜鏁板瓧鐨勬紜綅緗?/SPAN>
low--;//low == 8
hig++;// hig == 10
quickSort(a, low0, low);//quickSort(a, 0, 8)
quickSort(a, hig, hig0);//quickSort(a, 10,12)
}
}
//榪愯緇撴灉濡備笅:
E:\java\ProgramJava\35lessons\lesson8>javac QuickSort.java
E:\java\ProgramJava\35lessons\lesson8>java QuickSort
璇ユ暟緇勭殑闀垮害涓猴細13
*************************************************
5,8,57,9,23,41,65,19,0,1,2,4,27,false, (low,hig) =(1,12)
5,8,57,9,23,41,65,19,0,1,2,4,27,false, (low,hig) =(2,12)
5,8,27,9,23,41,65,19,0,1,2,4,57,true, (low,hig) =(2,11)
5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(3,11)
5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(4,11)
5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(5,11)
5,8,4,9,23,27,65,19,0,1,2,41,57,true, (low,hig) =(5,10)
5,8,4,9,23,2,65,19,0,1,27,41,57,false, (low,hig) =(6,10)
5,8,4,9,23,2,27,19,0,1,65,41,57,true, (low,hig) =(6,9)
5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(7,9)
5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(8,9)
5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(9,9)
0,8,4,9,23,2,1,19,5,27,65,41,57,false, (low,hig) =(1,8)
0,5,4,9,23,2,1,19,8,27,65,41,57,true, (low,hig) =(1,7)
0,5,4,9,23,2,1,19,8,27,65,41,57,true, (low,hig) =(1,6)
0,1,4,9,23,2,5,19,8,27,65,41,57,false, (low,hig) =(2,6)
0,1,4,9,23,2,5,19,8,27,65,41,57,false, (low,hig) =(3,6)
0,1,4,5,23,2,9,19,8,27,65,41,57,true, (low,hig) =(3,5)
0,1,4,2,23,5,9,19,8,27,65,41,57,false, (low,hig) =(4,5)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(4,4)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,2)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,1)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,0)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(1,2)
0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(1,1)
0,1,2,4,5,23,9,19,8,27,65,41,57,false, (low,hig) =(3,3)
0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(6,8)
0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(7,8)
0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(8,8)
0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(5,6)
0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(5,5)
0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(6,6)
0,1,2,4,5,8,9,19,23,27,57,41,65,false, (low,hig) =(11,12)
0,1,2,4,5,8,9,19,23,27,57,41,65,false, (low,hig) =(12,12)
0,1,2,4,5,8,9,19,23,27,41,57,65,false, (low,hig) =(11,11)
*************************************************
宸茬粡璧板嚭quickSort鏂規(guī)硶錛屽茍涓斾笅闈㈠湪涓葷▼搴忎腑鏄劇ず鏈鍚庣粨鏋?BR>0,1,2,4,5,8,9,19,23,27,41,57,65,

]]>