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));

}
原创文章 19 获赞 1 访问量 946

猜你喜欢

转载自blog.csdn.net/spring_man/article/details/105504686