Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >选择排序

选择排序

作者头像
Li_XiaoJin
发布于 2022-06-10 13:48:56
发布于 2022-06-10 13:48:56
23700
代码可运行
举报
文章被收录于专栏:Lixj's BlogLixj's Blog
运行总次数:0
代码可运行

选择排序的相关内容。

选择排序的思路:

第一轮,找到最小的元素,和数组第一个数交换位置。

第二轮,找到第二小的元素,和数组第二个数交换位置...

直到最后一个元素,排序完成。

https://lixj.fun/upload/2021/07/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8Fgif-26451cec2bf841be838833ed2f27462c.gif

算法复杂度:O(n²)

算法空间复杂度:O(1)

算法稳定性:不稳定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SelectSort {
    public static void sort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int minIndex = i;
            for (int j = i; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }

            if (minIndex != i) {
                swap(arr, i, minIndex);
            }
        }

    }

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/选择排序

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据结构与算法 基础排序(O(n^2))
不能直接找到一个比minIndex小的就swap,因为交换后比较的就是minIndex和后一个元素2个元素的比较 而不是minIndex和后面所有元素比较
g小志
2020/06/28
3180
冒泡排序
https://lixj.fun/upload/2021/07/v2-33a947c71ad62b254cab62e5364d2813_b-57fb62ea6a854792b28f0ef354af38fb.gif
Li_XiaoJin
2022/06/12
5220
冒泡排序
归并排序
归并排序是采用分治法的典型应用,而且是一种稳定的排序方式,不过需要使用到额外的空间。
Li_XiaoJin
2022/06/10
2970
归并排序
你知道和你不知道的选择排序
然后我们再通过我制作的gif,配上数据再了解一下过程。假设我们的待排序数组还是[5, 1, 3, 7, 6, 2, 4]。
SH的全栈笔记
2019/10/20
4680
Qz学算法-数据结构篇(排序算法--冒泡、选择)
排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程
浅辄
2023/06/14
2540
快速排序
https://lixj.fun/upload/2021/07/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F-eadb58e4707d48d6a047cecc1b637849.gif
Li_XiaoJin
2022/06/10
1430
快速排序
【数据结构】排序算法---直接选择排序(动图演示)
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
Crossoads
2024/10/22
2280
【数据结构】排序算法---直接选择排序(动图演示)
[数据结构与算法] 排序算法之选择排序和堆排序
选择排序(select sorting)也是一种简单的排序方法。它的基本思想是: 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换, 第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换, 第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…, 第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…, 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
时间静止不是简史
2020/07/25
6110
[数据结构与算法] 排序算法之选择排序和堆排序
图文并茂的排序算法
本文给出常见的几种排序算法的原理以及java实现,包括常见的简单排序和高级排序算法,以及其他常用的算法知识。
用户1212940
2022/04/13
2150
图文并茂的排序算法
详解选择排序算法
选择排序的思想是: 给定一个数组arr,其长度为n; 第一次从 arr[0] 到 arr[n-1] 中选取一个最值(按照需求,可以是最大值,可以是最小值,下同)与arr[0]进行交换; 第二次从arr[1] 到 arr[n-1] 中选取一个最值与arr[1]进行交换; 以此类推,直到arr[n-2]到arr[n-1]中选出最值交换后即完成排序。(只剩下一个元素,前面的都是比它小(或者大)的)。
code随笔
2020/04/14
7790
详解选择排序算法
掌握常见的几种排序-选择排序
从每次循环中我们可以知道选择排序,实际上就是先确认起始位置的索引,假设第一个是最小位置,从剩余元素中找到比第一个位置小的值,如果剩余的元素有比它小,那么确认当前索引为最小索引值,并交换两个元素的位置。
Maic
2022/07/28
2490
掌握常见的几种排序-选择排序
C#选择排序(Selection Sort)算法
选择排序算法的时间复杂度为O(n^2),其中n是待排序数组的大小。尽管其时间复杂度较高,但选择排序算法比较简单易懂,并且在某些特定情况下,例如对于小规模的数组来说,其性能可能表现得比其他高级排序算法要好。
追逐时光者
2023/07/21
2940
C#选择排序(Selection Sort)算法
希尔排序
希尔排序的思路:https://lixj.fun/upload/2021/07/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F-3d0d7c36d19e49cdbc93487df55a28d3.mp4
Li_XiaoJin
2022/06/10
1950
《数据结构与算法之美》——冒泡排序、插入排序、选择排序
当然,撇开这些业务场景,排序算法本身有一些自己的衡量指标,比如我们经常提到的复杂度分析。
JackieZheng
2019/05/25
4520
一文搞定选择排序算法
选择排序使用了双层for循环;如果看过我上一篇文章的话,可以很快的知道一些技巧,双层for循环的时间复杂度是: O(N2) O(N^{2}) O(N2)
手撕代码八百里
2020/07/28
3130
经典八种排序算法总结(带动画演示)
算法和数据结构是一个程序员的内功,所以经常在一些笔试中都会要求手写一些简单的排序算法,以此考验面试者的编程水平。下面我就简单介绍八种常见的排序算法,一起学习一下。
java技术爱好者
2020/09/22
9530
第三篇排序算法|选择排序
其实对于这样的内容,自己没有一个很明确的讲解流程,一般还是按照下面的内容来说吧,先暂时看下大概的内容。
码农王同学
2020/10/27
4580
必须掌握的八种排序(3-4)--简单选择排序,堆排序
3、简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换; 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 (2)理解
汤高
2018/01/11
7480
必须掌握的八种排序(3-4)--简单选择排序,堆排序
Java基础【冒泡、选择排序、二分查找】
从第一个开始 与他后面的每个数字进行比较,如果遇见比他小的 这个两个数字进行交换位置,
梅花
2020/09/28
4220
选择排序算法:简单但有效的排序方法
在计算机科学中,排序算法是基础且重要的主题之一。选择排序(Selection Sort)是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤,并提供Java语言的实现示例。
修己xj
2023/10/03
2790
选择排序算法:简单但有效的排序方法
相关推荐
数据结构与算法 基础排序(O(n^2))
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验