package com.ryan.demo1;
import java.lang.reflect.Array;
import javax.security.auth.kerberos.KerberosKey;
public class QuickSort {
public static void main(String[] args) {
int[] a= {5,2,6,0,3,9,1,7,4,8};
Qsort(a, 0, 9);
for (int i : a) {
System.out.println(a[i]);
}
}
public static int partition(int[] a,int low,int high) {
int M=low+(high-low)/2; //優(yōu)化之一: 選取的基準(zhǔn)值要是首尾中三個(gè)值的中位數(shù)筐骇,所以要對數(shù)組中的三個(gè)值進(jìn)行比較
if(a[low]>a[high]) //把首尾大的值換到最后面
{swap(a,low,high);}
if(a[M]>a[high]) //把中尾大的值換到最后面
{swap(a,M,high);}
if(a[low]<a[M]) //把首重大的值換到最前面
{swap(a,M,low);}
int point; //把第一個(gè)值當(dāng)作 基準(zhǔn)值
point=a[low];
while(low<high) {
while(low<high&&point<=a[high]) { //把數(shù)組右邊比基準(zhǔn)值大的值過濾了
high--;
}
/*swap(a, low, high);*/ //優(yōu)化之二:point值會(huì)頻繁交換移動(dòng),所以直接賦值枣购,將數(shù)組右邊大的值填給左邊小的數(shù)組
a[low]=a[high];
while(low<high&&a[low]<=point) { //把數(shù)組右邊比基準(zhǔn)值大的值過濾了
low++;
}
/*swap(a, low, high);*/
a[high]=a[low];
}
a[low]=point;//補(bǔ)位,補(bǔ)最后那個(gè)空出來的位置
return low;
}
public static void Qsort(int[] a,int low,int high) {
int point;
int length_insertsort=7; //插入排序的長度
if((high-low+1)>length_insertsort) {
while(low<high)
{ point=partition(a,low,high);
if(point-low<high-point) //運(yùn)用尾遞歸称簿,即先對數(shù)組短的進(jìn)行遞歸精堕,如果結(jié)束了再對point賦值 跑到另一組數(shù)組進(jìn)行遞歸
{ Qsort(a, low, point-1);
low=point+1;} //執(zhí)行此語句時(shí),意味著前面一句的Qsort已經(jīng)因?yàn)閘ow等于high而終止瞧挤,所以此時(shí)point+1跳出當(dāng)前循環(huán),另一對數(shù)組開始執(zhí)行遞歸
else { Qsort(a, point+1, high);
high=point-1;
}
}}
else{
insertSort(a,low,high);
}
}
public static void insertSort(int[] a,int low,int high) {
int i,j;
for(i=low+1;i<high;i++) {
for(j=i;(j>low)&&a[j]<a[j-1];j--) {
swap(a,j,j-1);
}
}
}
public static void swap(int[] a,int low,int high) {
int temp =a[high];
a[high]=a[low];
a[low]=temp;
}
}
快速排序
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門摊崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讼油,“玉大人,你說我怎么就攤上這事呢簸。” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵根时,是天一觀的道長瘦赫。 經(jīng)常有香客問我,道長蛤迎,這世上最難降的妖魔是什么确虱? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮替裆,結(jié)果婚禮上校辩,老公的妹妹穿的比我還像新娘。我一直安慰自己辆童,他們只是感情好宜咒,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著把鉴,像睡著了一般故黑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庭砍,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罐呼!你這毒婦竟也來了鞠柄?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對情侶失蹤嫉柴,失蹤者是張志新(化名)和其女友劉穎厌杜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體计螺,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡夯尽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了登馒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匙握。...
- 正文 年R本政府宣布蛾娶,位于F島的核電站灯谣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛔琅。R本人自食惡果不足惜胎许,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罗售。 院中可真熱鬧辜窑,春花似錦、人聲如沸寨躁。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽朽缎。三九已至送淆,卻和暖如春振坚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓湿颅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親床蜘。 傳聞我的和親對象是個(gè)殘疾皇子辙培,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 總結(jié)一下常見的排序算法。 排序分內(nèi)排序和外排序邢锯。內(nèi)排序:指在排序期間數(shù)據(jù)對象全部存放在內(nèi)存的排序扬蕊。外排序:指在排序...
- 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序丹擎,而外部排序是因排序的數(shù)據(jù)很大尾抑,一次不能容納全部...
- 借鑒于[美團(tuán)點(diǎn)評技術(shù)團(tuán)隊(duì)][2][2]: http://tech.meituan.com/java-hashmap...