SelectionSort(选择排序)

笔者在刚开始学习选择排序的时候,遇到将最小的位置交换的时候写在第二层循环,导致最后在自己给定的数组,有一个无法正常的排除顺序,希望以后学习算法的人,可以以此为鉴吧,吸收前人的经验吧;

注:笔者将那个地方标识,自己可以输出测试的看看。我就不把运行的结果粘贴出来。

public class SelectionSort {
    public static void main(String[] args) {
        int arr[]={3,1,2,4,9,6,5,7,8};
         int minIndex=0;
         int temp=0;
        //选择排序:将最小的和当前循环的位置进行较换,并且要记录当前的位置
        for(int i=0;i<arr.length;i++){
              minIndex=i; //标记当前位置(假设当前位置是最小的下标位置)
                 for(int j=i+1;j<arr.length;j++){
                     if(arr[j]<arr[minIndex]){
                         minIndex=j;
                     }    
                     //为什么放在这就遍历的有问题
                    /* temp= arr[i];
                     arr[i]=arr[minIndex];//保证这个位置是最小的
                        arr[minIndex]=temp;*/

                     } 

                 //这两个地方大家需要注意一下  
                 temp= arr[i];
                 arr[i]=arr[minIndex];//保证这个位置是最小的
                    arr[minIndex]=temp;

        }
        
        
        //遍历数组
        for(int array:arr){
            System.out.println("冒泡顺序完成:"+array);
        }
    
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值