Java选择排序(思路和代码实现)

这篇博客探讨了选择排序和冒泡排序这两种基本排序算法。作者指出选择排序可以视为冒泡排序的优化版,因为它在每趟比较中只交换一次元素,找到当前未排序部分的最大值并放到正确位置。通过举例对选择排序的过程进行了详细解释,并提供了一个Java实现的选择排序代码示例,展示了如何逐步将数组排序为升序。
摘要由CSDN通过智能技术生成

还是我们先进行思路整理:我们对int[] array = {3,1,4,2,5,6,};进行选择排序,个人认为选择排序就是冒泡排序的升级版,因为他保留了冒泡多趟对比的思路,每趟确定一个最值,冒泡每趟需要交换n次,而选择只需要交换一次.交换的是最大值,在循环内部进行最大值的索引,

第一趟比较    :  3,1,6,2,5,4  
                    
       int maxIndex = 0;//最大值索引
       第一次    :  array[maxIndex] 和 3比较,如果array[maxIndex] < 3 则记录maxIndex = 0; 
       第二次    :  array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1; 
       第三次    :  array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1; 
      第四次    :  array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1; 
       第五次    :  array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1; 
       
       
   第二趟比较    :  1,3,2,5,4,6
       
  第三趟比较    :  1,2,3,4,5,6
       
   第四趟比较    :  1,2,3,4,5,6
       
   第五趟比较
 

public static void main(String[] args) {
		int[] array = {3,1,6,2,5,4};
		int max = 0;
		for (int i = 0; i < array.length; i++) {
			
			if (max < array[i]) {
				max = array[i];
			}
		}
		System.out.println(max);
		System.out.println("------------------");
		
		for (int i = 0; i < array.length; i++) {
			
			int maxIndex = 0;//-- 最大值索引
                //-- -i是为了去掉已经确定的最大值
			for (int j = 0; j < array.length - i; j++) {
				if (array[maxIndex] < array[j]) {
					maxIndex = j;
				}
			}
			//-- 找到一个最大值的索引了.用这个索引的数和最后一个元素做交换
			int temp = array[maxIndex];
			array[maxIndex] = array[array.length - 1 - i];
              //-- -1是最后一个元素减去,-i是去掉比较的最大值                                  
			array[array.length - 1 - i] = temp;
			//-- 3 1 4 2 5 6
			System.out.println(Arrays.toString(array));
			
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值