面試必備-快速排序(Java)

以s[l]爲基準,從右向左比較,找到比它小的就放到s[i]

從左向右比較,找到比它大的就放到s[j],

當i==j時,退出循環,s[i]=x

時間複雜度是nlogn

public class quickSort {

 static void quickSortM(int[] s, int l, int r){
	if (l < r){
		int x = s[l];
		int i = l,j = r;
		while (i < j){
			while (i < j && s[j] >= x){
				j--;
			}
			if (i<j)
				s[i++] = s[j];
			while (i <j && s[i] < x){
				i++;
			}
			if (i<j){
				s[j--] = s[i];
			}
		}
		s[i] = x;
		quickSortM(s,l,i-1);
		quickSortM(s,i+1,r);
	}
}

public static void main(String[] args){
	int s[] = {72,92,3,88,43,100,56};
	quickSortM(s,0,s.length-1);
	int j;
	for (j=0;j<s.length;j++)
		System.out.println(s[j]);
}
}

發佈了43 篇原創文章 · 獲贊 12 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章