前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JAVA排序之选择排序 带图和code

JAVA排序之选择排序 带图和code

作者头像
张哥编程
发布于 2024-12-13 08:37:20
发布于 2024-12-13 08:37:20
11900
代码可运行
举报
文章被收录于专栏:云计算linux云计算linux
运行总次数:0
代码可运行

选择排序介绍

选择排序(Selection sort)是一种简单直观的排序算法。 它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
 * 选择排序
 *
 * 参数说明:
 *     a -- 待排序的数组
 *     n -- 数组的长度
 */
void select_sort(int a[], int n)
{
    int i;        // 有序区的末尾位置
    int j;        // 无序区的起始位置
    int min;    // 无序区中最小元素位置

    for(i=0; i<n; i++)
    {
        min=i;

        // 找出"a[i+1] ... a[n]"之间的最小元素,并赋值给min。
        for(j=i+1; j<n; j++)
        {
            if(a[j] < a[min])
                min=j;
        }

        // 若min!=i,则交换 a[i] 和 a[min]。
        // 交换之后,保证了a[0] ... a[i] 之间的元素是有序的。
        if(min != i)
            swap(a[i], a[min]);
    }
}

选择排序图文说明 下面以数列{20,40,30,10,60,50}为例,演示它的选择排序过程(如下图)。

JAVA排序之选择排序 带图和code_java
JAVA排序之选择排序 带图和code_java

排序流程

第1趟:i=0。找出a[1…5]中的最小值a[3]=10,然后将a[0]和a[3]互换。 数列变化:20,40,30,10,60,50 – > 10,40,30,20,60,50 第2趟:i=1。找出a[2…5]中的最小值a[3]=20,然后将a[1]和a[3]互换。 数列变化:10,40,30,20,60,50 – > 10,20,30,40,60,50 第3趟:i=2。找出a[3…5]中的最小值,由于该最小值大于a[2],该趟不做任何处理。 第4趟:i=3。找出a[4…5]中的最小值,由于该最小值大于a[3],该趟不做任何处理。 第5趟:i=4。交换a[4]和a[5]的数据。 数列变化:10,20,30,40,60,50 – > 10,20,30,40,50,60

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
05-选择排序
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/10/22
4100
05-选择排序
排序算法总结(多图)
不稳定的排序: 稳定性一个形象的比喻,本来有两个并列第三,一排序把原来并列的顺序给变了。 比如:选择排序、快速排序、堆排序、希尔排序; 参考链接
芋道源码
2018/10/26
6880
排序五 简单选择排序
该文介绍了冒泡排序算法的基本原理和实现过程,并通过示例代码和运行结果来展示冒泡排序算法的运行过程。同时,文章还对冒泡排序算法的时间复杂度和空间复杂度进行了分析。
静默虚空
2018/01/05
6430
排序五 简单选择排序
Python3选择排序
选择排序 概述 选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 基本过程 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 以此类推,直到所有元素均排序完毕。 代码 # -*- coding:utf-8 -*-
苦叶子
2018/04/09
6630
选择排序—简单选择排序(Simple Selection Sort)
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
瑾诺学长
2018/09/21
1.9K0
选择排序—简单选择排序(Simple Selection Sort)
手敲一遍排序算法 Java
**稳 定:**插冒归计基(简单插入排序、冒泡排序、归并排序、计数排序、基数排序)
小锋学长生活大爆炸
2020/12/08
3560
数据结构算法--2 冒泡排序,选择排序,插入排序
思想就是将相邻元素两两比较,当一个元素大于右侧相邻元素时,交换他们的位置,小于右侧元素时,位置不变,最终序列中的最大元素,像气泡一样,到了最右侧。
@小森
2024/03/15
1080
数据结构算法--2 冒泡排序,选择排序,插入排序
算法渣-排序-选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
码农戏码
2021/03/23
8540
选择排序
简单选择排序不能再简单了,基本思想就是先外层循环n,作用是每循环一遍找出一个数最小的(分为无序区和有序区),在无序区中找到最小的那个数,再给到有序区。当然,找到无序区中最小的数那样也需要在无序区中在循环遍历一遍,这样时间复杂度就是o(n2),是稳定排序。 下面贴出教材的简单选择排序代码
废江_小江
2022/09/05
1350
选择排序
选择排序
选择排序 思想 将数据分成两个部分:前面排好序和后面待排序的 从没有排序的数据选择出一个最小的数据,放在前面排好序的后面 不稳定 时间复杂度 最坏时间复杂度:O(n^2) 最优时间复杂度:O(n^2) Python实现 def select_sort(alist): # 选择排序 n = len(alist) for j in range(0, n-1): # 记录最小位置 min_index = j # 内层for循环找到了后
皮大大
2021/03/02
3080
C语言排序(冒泡排序、选择排序、插入排序和快速排序)
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。每一趟排序后的效果都是讲没有沉下去的元素给沉下去。
全栈程序员站长
2022/09/12
1.7K0
C语言排序(冒泡排序、选择排序、插入排序和快速排序)
js 实现选择排序及优化
参考链接 :https://blog.csdn.net/hcz666/article/details/126486057
蓓蕾心晴
2022/09/24
4.8K0
十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序[通俗易懂]
  冒泡排序是比较基础的排序算法之一,其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序。   冒泡排序的步骤是比较固定的:
全栈程序员站长
2022/09/14
8250
十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序[通俗易懂]
Java中数组高级之各种排序代码
1.冒泡排序 1 package cn.itcast; 2 3 /* 4 * 冒泡排序基本思路是: 5 * 依次比较相邻的两个数,将小数放在前面,大数放在后面。 6 * 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。 7 * 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续, 8 * 直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。 9 * 在
黑泽君
2018/10/12
5900
排序算法 (十) ---简单选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
葆宁
2022/01/13
3600
排序算法 (十) ---简单选择排序
【排序】插入排序与选择排序详解
选择排序是一种简单直观的排序算法。它的工作原理如下:在未排序序列中找到最小(大)元素,交换到起始位置,该元素为已排序序列的起始元素,继续在剩余未排序元素中找到最小(大)元素,交换到未排序序列起始位置,重复第二步,直到所有元素均排序完毕。
学习起来吧
2024/03/23
1750
【排序】插入排序与选择排序详解
选择排序
比如,第一次排序,所有元素(n)都是未排序的,就在所有元素里选出最小值,然后将这个最小值和第一个位置互换,然后第二次在剩余的元素(n-1)里先选出最小值(也就是全部元素(n)的第二小值),然后把最小值和第而个值互换位置,......以此类推,知道找到第n-1个元素和n互换位置后,第n个位置不用比较了,因为他就是最大值。
hss
2022/02/25
3290
面试官爱问的10大经典排序算法,20+张图来搞定
冒泡排序是因为越小的元素会经由交换以升序或降序的方式慢慢浮到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名冒泡排序。
C语言与CPP编程
2021/05/18
5660
面试官爱问的10大经典排序算法,20+张图来搞定
选择排序(简单选择排序、堆排序)
选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。
跋扈洋
2021/09/03
6080
选择排序(简单选择排序、堆排序)
一文搞定选择排序算法
选择排序使用了双层for循环;如果看过我上一篇文章的话,可以很快的知道一些技巧,双层for循环的时间复杂度是: O(N2) O(N^{2}) O(N2)
手撕代码八百里
2020/07/28
3180
相关推荐
05-选择排序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验