java中的排序----快速排序

java中的排序----快速排序的思想:每一個數與後面的n個數進行比較。存在兩個for循環

第一個:遍歷數組中的每一個數(除了最後一個數)

第二個:遍歷第一個循環遍歷到的數後面的所有的元素。

eg:手機排序

public void selectSort1(int a[]) {
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = i + 1; j < a.length; j++) {
				if (a[i] > a[j]) {
					swap(a, i, j);
				}
			}
		}
		print(a);

	}

對於快速排序的優化:即在進行第二個是若每一次if的判斷都是有效的(都會交換一次)那麼將會大大的降低程序的速率,因此優化快速排序即備份需要比較的數,保留下標,最後只用進行一次交換就可以。

public void selectSort2(int a[]) {
		for (int i = 0; i < a.length - 1; i++) {
			int k = i;
			for (int j = i + 1; j < a.length; j++) {
				if (a[k] > a[j]) {
					k = j;
				}
			}
			if (i != k)//可以判斷也可以不用判斷
				swap(a, i, k);
		}
		print(a);

	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章