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

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值