前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >7.4.1简单选择排序

7.4.1简单选择排序

作者头像
week
发布于 2018-08-27 02:21:26
发布于 2018-08-27 02:21:26
41500
代码可运行
举报
文章被收录于专栏:用户画像用户画像
运行总次数:0
代码可运行

选择排序的基本思想是:每趟(例如第i趟)在后面 n-i+1(i=1,2,...,n-1)个待排序元素中选取关键字最小的元素,

作为有序子序列的第i个元素,直到第n-1趟直到第n-1趟做完,待排序元素只剩下1个,就不用再选了。

选择排序的基本思想:假设排序表为L[1...n],第i趟排序即从L[i..n]中选择关键字最小的元素与L[i]交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可以使整个排序表有序。

简单选择排序的伪代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void SelectSort(Elemtype A[],int n){
    //对表A进行简单选择排序,A[]从0开始存放元素
    for(i=0;i<n-1;i++){//一共进行n-1趟
        min=i;//记录最小元素位置
        for(j=i+1;j<n;j++){//在A[i...n-1]中选择最小的元素
            if(A[j]<A[min]){
                 min=j;
            }
        }
        if(min!=i){
            swap(A[i],A[min]);//与第i个元素交换
        }
    }
}

简单选择排序算法的性能分析: 空间效率:仅使用常数个辅助单元,故而空间效率为O(1)。 时间效率:简单选择排序过程中,元素移动的操作次数很少,不会超过n-1次,最好情况是移动0次,此时对应的表已经有序。 但元素间比较的次数与序列的初始状态无关,始终是n(n-1)/2次,所以时间复杂度是O(n^2)。 稳定性:在第i趟找到最小元素后,和第i个元素交换,可能会导致第i个元素和其含有相同关键字元素的相对位置发生变化。 例如,表L={2,2,1},经过一趟排序后,L={1,2,2},最终排序序列也是L={1,2,2},显然,2与2的相对次序已经发生了变化。因此,简单选择排序是一个不稳定的排序过程。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是简单选择排序?
简单选择排序的基本思想是每一趟在后面n-i+1个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完。
跋扈洋
2022/12/03
6070
什么是简单选择排序?
排序之简单选择排序
  本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都有详细讲解,而我写这些博客只是记录自己学习过程,加入了一些自己的理解,同时也希望给别人提供帮助。
青石路
2018/09/10
4710
排序之简单选择排序
选择排序(简单选择排序、堆排序)
选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。
跋扈洋
2021/09/03
5640
选择排序(简单选择排序、堆排序)
简单选择排序和堆排序
最近在全面学习数据结构,常用算法记录:简单选择排序和堆排序,简单选择排序的基本思想是每一趟在待排序元素中选取关键字最小的元素加入有序子序列,直到所有元素有序,总共进行 n-1 趟。堆排序的基本思想见文末图片。
字节星球Henry
2022/09/20
5980
简单选择排序和堆排序
选择排序—简单选择排序(Simple Selection Sort)
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
瑾诺学长
2018/09/21
1.9K0
选择排序—简单选择排序(Simple Selection Sort)
【数据结构】八大排序之简单选择排序算法
依照这个思路,我们对简单选择排序进行优化,使其一趟就可以将最大的元素和最小的元素都选出来交换到相应的位置上,综上,代码实现如下:
修修修也
2024/04/01
6710
【数据结构】八大排序之简单选择排序算法
简单选择排序 C语言
1) 设待排序的记录存放在数组Data[1…n]中。第一趟从Data[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为Data[k],交换Data[1]和Data[k]。 2) 第二趟从Data[2]开始,通过n- 2次比较,从n-1个记录中选出关键字最小的记录,记为Data[k],交换Data[2]和Data[k]。 3) 依次类推,第i趟从Data[i]开始,通过 n – i 次比较,从n-i+1个记录中选出关键字最小的记录,记为Data[K],交换Data[i]和Data[k]。 4) 经过n-1趟,排序完成。
全栈程序员站长
2022/09/12
7440
简单选择排序 C语言
数据结构:排序
外部排序:是指在排序期间元素无法全部同时存在内存中,必须在排序的过程中根据要求不断地在内、外存之间移动的排序
HLee
2021/02/09
6470
数据结构:排序
Python——关于排序算法(选择排序法)
假设首数字最小,然后依次比对,最终取得最小值的序号,也就是1的序号,然后将1与首位数字互换:
Ed_Frey
2019/07/04
6850
Python——关于排序算法(选择排序法)
选择排序算法详解_八大排序算法图解
选择排序就是从待排序的元素中选择最小(最大)的元素,将其放在有序序列的相应位置,使这些元素构成有序序列。选择排序主要有两种:简单选择排序和堆排序。
全栈程序员站长
2022/11/17
3210
选择排序算法详解_八大排序算法图解
排序五 简单选择排序
该文介绍了冒泡排序算法的基本原理和实现过程,并通过示例代码和运行结果来展示冒泡排序算法的运行过程。同时,文章还对冒泡排序算法的时间复杂度和空间复杂度进行了分析。
静默虚空
2018/01/05
6200
排序五 简单选择排序
排序——选择排序
选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列R[1.. L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <= L.length; ++j) if(L.r[j].key < L.r[k].k
ruochen
2021/06/30
9130
排序——选择排序
必须掌握的八种排序(3-4)--简单选择排序,堆排序
3、简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换; 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 (2)理解
汤高
2018/01/11
7350
必须掌握的八种排序(3-4)--简单选择排序,堆排序
选择排序
简单选择排序不能再简单了,基本思想就是先外层循环n,作用是每循环一遍找出一个数最小的(分为无序区和有序区),在无序区中找到最小的那个数,再给到有序区。当然,找到无序区中最小的数那样也需要在无序区中在循环遍历一遍,这样时间复杂度就是o(n2),是稳定排序。 下面贴出教材的简单选择排序代码
废江_小江
2022/09/05
1230
选择排序
排序算法 (十) ---简单选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
葆宁
2022/01/13
3490
排序算法 (十) ---简单选择排序
【数据结构】七大排序算法
排序的相关概念 排序的分类 根据在排序过程中带排序的记录是否全部被放置在内存中,排序分为: 内排序 外排序 1.内排序 内排序是在排序整个过程中,带排序的所有记录全部放置在内存中。 影响内排序的主要因素: 时间性能。(主要受比较和移动两种操作的影响) 辅助空间。 算法的复杂性。 内排序的分类 根据排序过程中借助的主要操作,内排序分为: 插入排序 交换排序 选择排序 归并排序 2.外排序 外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。 按照算法的复杂
我就是马云飞
2018/02/05
1.2K0
【数据结构】七大排序算法
直接插入排序和直接选择排序
直接插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的序列中的适当位置,直到全部记录插入完成为止。
创译科技
2019/06/02
3.6K0
【排序3】选择排序:高效的排序算法之美
直接选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序的部分中找到最小(或最大)的元素,将其与未排序部分的第一个元素交换位置,然后缩小未排序部分的范围,继续进行选择和交换,直到整个序列有序。
小舒不服输
2024/01/30
1280
【排序3】选择排序:高效的排序算法之美
数据结构-排序算法原理和Python实现
基本思想是每次讲一个待排序的记录,按其关键字大小插入到前面已拍好的子序列中,直到全部完成。
百川AI
2021/10/19
3280
【算法基础】java 排序算法
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
用户5640963
2019/07/26
9910
【算法基础】java 排序算法
相关推荐
什么是简单选择排序?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文