【排序算法】直接选择排序

1  前言

今天把排序的几个算法过一下,这节我们看一下直接选择排序,简单的来说就是默认某个位置为最小然后从位置后的元素逐个比较进行交换,我们看示例。

2  代码示例

复制代码
/**
 * 直接选择排序
 * 直接选择相当于直接把第 i 个看作是最大或者最小,然后依次跟后边的每个元素进行比较,比我小的就跟我交换一下
 * 假设待排序的数量为:n
 * 要考虑的是:
 * 1、还是需要 n-1 轮
 * 2、因为首先我们要从第一个(也就是索引为 0) 的开始,那么外层循环就是 0 -> n-1
 *    内层循环就从 外层索引+1的位置开始到最后一个
 */
public static void selectSort(int[] arr) {
    // 外层循环既是直接选择的索引位置 也是要进行的轮数
    for (int i = 0; i < arr.length - 1; i++) {
        // 内层循环从外层索引 + 1 的位置开始到最后一个
        for (int j = i+1; j < arr.length; j++) {
            // 升序,比我小的就跟我换位置
            if (arr[j] < arr[i]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
public static void main(String[] args) {
    int[] arr = IntStream.generate(() -> ThreadLocalRandom.current().nextInt(10000)).limit(10000).toArray();
    System.out.println("排序前:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
    selectSort(arr);
    System.out.println("排序后:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(",")));
}
复制代码

3  小结

有写的不对的地方,欢迎指正哈。

posted @   酷酷-  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示