选择排序Java

各种视频,各种文章上查阅后整理分享。站在巨人的肩膀上摘苹果。

1原理:选择排序和冒泡很像,主要思想就是从一个数组中找到最小的与数组第一位进行交换(最小的不是他自己,是他自己就忽略掉),
从第二位开始遍历,选出最小的元素与第二个元素交换,依次类推。
2时间复杂度:O(n^2),
3代码实现
public class SelectSort {

    public static void main(String args[]) {
        int arr[] = { 2, 568, 34, 46, 9, 23, 89, 43, 572, 684, 783, 543 };
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void selectSort(int arr[]) {
        //遍历所有数
        for (int i = 0; i< arr.length; i++) {
            int minIndex = i;//以第一个为基准,认为它是最小
            //把当前遍历的数和后边所有数依次比较,记录最小数下标
            //1:为了寻找最小下标
            for(int j = i+1; j< arr.length; j++) {//从第二个开始遍历
                if(arr[minIndex] > arr[j]) {//后边的比逻辑上最小的小,则记录最小的下标
                    minIndex = j;//将当前位置赋值给最小的下标
                }
            }

            //如果i与最小minIndex不相等,说明minIndex更小;
            //找到最小下标后与数组中元素做对比不相等说明需要交互位置。
            //如果上面的没找到的情况下它自己就是最小的,此时不需要进行交互所以排除掉
            if(i != minIndex) {//不相等说明i对应的不是最小的所以需要与minIndex的进行交互
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;//交互位置
            }
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值