Java排序算法二:選擇排序

選擇排序(升序):
1,通過循環找到數組中的最小值放到第1位,然後再剩餘元素中找到最小值放到第2位

高亮標記的元素就是下一輪要找出最小元素的範圍,找出最小元素放到高亮標記的最左邊

代碼:

/**
 * 找到最小值交換位置
 */
public void forInner() {
	int arr[] = {9,5,7,3,10,4};
	//找出數組中最小的元素和第一個元素交換
	int minIndex = 0;
	for (int i = minIndex + 1; i < arr.length; i++) {
		if (arr[i] < arr[minIndex]) {
			minIndex = i;
		}
	}
	int temp = arr[0];
	arr[0] = arr[minIndex];
	arr[minIndex] = temp;
	System.out.println(Arrays.toString(arr));
	//從第2個元素開始到數組最後1個元素中找出最小值和第2個元素交換
    //直到從倒數第2個元素和倒數第1個元素找最小值,將最小值和倒數第2個元素交換
}

/**
 * 選擇排序(升序)
 */
public void select() {
	int arr[] = { 9, 5, 7, 3, 10, 4 };
	System.out.println(Arrays.toString(arr));
	for (int j = 0; j < arr.length - 1; j++) { //控制輪數
		int minIndex = j;
		for (int i = minIndex + 1; i < arr.length; i++) { //指定範圍找到最小值
			if (arr[i] < arr[minIndex]) {
				minIndex = i;
			}
		}
		int temp = arr[j];
		arr[j] = arr[minIndex];
		arr[minIndex] = temp;
//			System.out.println(Arrays.toString(arr));
	}
	System.out.println(Arrays.toString(arr));

}

 

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