选择法排序

作者&投稿:郭耐 (若有异议请与网页底部的电邮联系)
~

选择法排序:

1、在实际工作中,我们接收到的数组不可能都是有序的,那怎么办呢?于是乎我们就应该先对接收到的数组或者列表进行排序。今天先来介绍第一种排序方法————选择排序。

2、知识准备

我们都知道不管是数组还是链表,它们都是操作系统为我们开辟的一系列空间,但两者不同的是数组是一段连续的内存空间,而链表不连续。这两种内存空间都各有利弊,我们要视实际情况选择数组还是链表解决问题。首先,我们应对内存有一个直观的了解。


2.1.1 内存

我们都去超市买过东西,但是进入超市并不能携带我们的包或者其他物品,超市便提供了储物柜让我们存放物品,这个储物柜又分了很多小的储物箱。

每个储物箱都只能放一件合适的东西,但你有两件东西,那怎么办呢?那我们就得向储物柜请求两个储物箱的位置。等到储物柜给你开好两个箱门时,你便可将东西存放起来。这大致上就是计算机内存的工作原理。

当我们需要将数据存储到内存时,我们需要向操作系统请求存储空间,计算机会在内存空间允许的情况下,便会分配给你一个内存地址。同理当我们需要存储多项数据时,编程语言向我们提供了两种基本方式————数组和链表,正如上面所说,两者有不同之处且各有利弊。下面介绍数组和链表的相关知识。

2.1.2 数组

上面介绍到,当我们需要存储多项数据,便需要向操作系统请求一段内存空间。编程语言向我们提供了数组和链表两种方式,那么我们应该选择数组还是链表呢?上面介绍到数组是一段连续的内存空间,链表是不需要连续的,只需要每块内存中保留下一块内存的地址,于是乎这些地址块串联在一起,便形成了一段内存空间。

2.1.3 链表

链表这个老大哥的话,它允许你把数组存储到内存的任何地方(可不连续)。但是如何找到下一个数据呢,那么就需要上一个数据携带下一个内存的地址,从而使得随机的内存串联在了一起。所以在链表上加入元素很容易,只需将其放入内存中,然后把地址存储到上一个元素中去。使用链表时,不需要去移动数据。

2.1.4 优缺点

数组的优点很明显就是读取数据,在于它天然的连续性,如果我们已知了数组存储的首地址,那么我们找任何一个数据都是很容易(数组是定长的),用大O表示法为O(1)。但我们需要注意的是数组中元素的索引是从0开始的,而不是1。从0开始让基于数组的代码编写起来很容易,因此程序员始终坚持这么做。

选择排序的原理:

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

还是用生活中的例子来解释选择排序的原理。我们都是老网抑云了,当我们听每首歌时,网易云后台都会收集每首歌的播放次数。

于是乎程序员需要对每一个用户喜爱播放的歌曲次数由多到少的进行排列,很容易想到的就是我再弄一个列表过来,每一次遍历这个次数列表,找出第一多的,放到我的新列表中去,然后在遍历次数列表,找出第二多,然后保存在新列表,循环往复。




中国古代文武的谥号排序
民无能名曰神。不名一善。靖民则法曰皇。靖安。德象天地曰帝。同于天地。仁义所往曰王。民往归之。立志及众曰公。志无私也。执应八方曰侯。所执行八方应之。赏庆刑威曰君。能行四者。从之成群曰君。民从之。扬善赋简曰圣。所称得人,所善得实,所赋得简。敬宾厚礼曰圣。厚于礼。照...

同分投档序号是什么意思
一、安排政策照顾的考生:根据照顾录取政策的规定,首先安排享受政策照顾的考生;若情况又相同,则先比较语文、数学、英语三科分数之和,若再有相同,则依次比较数学、语文、英语单科成绩。若仍有相同,又再比较综合表现评定等级,从高到低进行择优投档录取;依照上述规则对全市总分相同的考生进行排序产生的...

高考志愿填报 平行志愿ABC和第二平行ABCDE是什么意思???该怎样填写...
(5)不要用选学校代替择专业,而要把握专业录取办法。(6)不要看到就是宝,而要去粗取精、去伪存真、善于思考。选专业时要避免几个盲区,第一不要扎堆热门专业,第二要认清专业本身,要了解所选专业具体是做什么的,有些什么课程,也要了解其专业未来的发展,第三,不要忽略自己的潜能,自己没有尝试怎么知道自己不行...

商务礼仪中座次排序的基本规则
③双排座轿车:主人或熟识的朋友亲自驾驶汽车时,副驾位置为上座。专业司机驾车,一般商务或公务接待场合,第二排司机斜对角位置为上座位。职业司机驾车,接送高级官员、将领、明星等知名公众时,司机后方位置为上座。2、开会座次排序 ①小型会议:面门而坐,居右而坐,居中而坐,自由择坐。②大型会议:...

怎样看阴阳宅
2)宅的卦象 宅的卦象按东四宅与西四宅分类,也是按上述方法推理,其排序方位是固定的。 3)东四宅与西四宅的宅居布置 所谓宅居布置,其主要是指房间内的门...大游年法与东西四宅法之间的关系 大游年法与东西四宅法常常混合使用。 大游年法八门宫位与"伏位"相吉的其它三个方位必在同一四宅中,如果"伏位"在东四...

新版WPS表格怎么设置数值的排序
方法\/步骤 1,如图,假设我点选一列,并让扩展全表。然后进行排序,发现其是按照字母顺序进行排序的,如何让这种表在今后的使用中按我的要求进行排序呢?2,我们点击左上角的“WPS表格”,从弹出的菜单中,我们点择最下方的“选项”3,我们从选项界面中打开“自定义序列”界面,然后输入序列,点击“添加...

回字形会议桌座次如何排列?
回形会议座位排列主要分一下情形:1、一般大型会议主席台的座位排序 根据中国人的传统习惯,一般遵循“左为上,中为上,前为上”的原则。2、接待来宾时的座位排序 接待领导和来宾时,一般在小型会议室,会议桌是长条形或回形,主方和客房相向而坐,如会谈桌一侧朝向正门,则主方坐背门一侧,客房坐...

江门市房屋建筑和市政基础设施工程招标投标评定分离改革试点工作指引...
票决定标法是通过择优投票确定中标候选人及其排序的方法。定标委员会根据招标文件规定的择优标准(参考附件2)对定标候选人进行评审比较,以票决择优方式确定定标候选人的排序。3.符合法律法规的其他定标办法。四、筛选程序(一)正式投标人小于等于15个时,全部入围评标程序。(二)正式投标人大于15个时,参照《江门市房屋...

2024年上海插班生预录取名单汇总(陆续更新)
复旦大学2024年插班生招生选拔已结束,依据笔试成绩排序及招生计划数划定预录取分数线如下:相关考生可登录上海市高校插班生统一报名平台查询成绩。按简章规定,将获得预录取资格的考生名单公示如下(公示一周,6月26日截止):上海交通大学2024年插班生招生面试成绩已公布,考生可登录上海交通大学网上报名系统(...

参加会议如何安排座次?
二是按单位就座。指的是与会者在群众席上按单位、部门或者地位、行业就座。它的具体依据,既可以是与会单位、部门的汉字笔划的多少、汉语拼音字母的前后,也可以是其平时约定俗成的序列。按单位就座时,如果分前排后排,以前排为高,以后排为低;如果分为不同楼层,楼层越高,排序越低。三、宴席座次 ...

冷水江市19620927444: 选择法排序 - 搜狗百科
融看特尔: void sa(int array[],int n) {int i,j,k,temp;for(i=0;i<10;i++){k=i; //保存i的值,用k来进行循环排序for(j=i+1;j<n;j++) //将第i个元素后面的元素与第i个元素进行比较if(array[j]<array[k]) //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号...

冷水江市19620927444: 选择排序法 -
融看特尔: 选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.我们主要介绍简单选择排序、树型选择排序和堆排序.简单选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换.共需进行i-1趟比较,直到所有记录排序完成为止.

冷水江市19620927444: 什么叫选择法排序? -
融看特尔: 选择排序法 是对 定位比较交换法 的一种改进.在讲选择排序法之前我们先来了解一下定位比较交换法.为了便于理解,设有10个数分别存在数组元素a[0]~a[9]中.定位比较交换法是由大到小依次定位a[0]~a[9]中恰当的值(和武林大会中的比武...

冷水江市19620927444: C语言 选择法排序该怎么理解? -
融看特尔: 很简单,将数组分为两部分,前半部分为有序序列,后半部分为待排序的无序序列.一开始,前半部分长度为0,后半部分长度为数组长度.然后,每次从后半部分找出最大(最小)的数,将它加入到前半部分的尾部,前半部分长度+1,后半部分长度-1.重复上述过程,直到后半部分长度为0,则整个数组排序完毕.

冷水江市19620927444: C语言 怎么样用选择法对10个整数排序? -
融看特尔: 选择法排序是一种简单的容易实现的对数据排序的算法.以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同).要求对其元素排序使之递增有序.首先以一个元素为基准,从一个方向开始扫描,比如从左至...

冷水江市19620927444: C语言如何用选择法排序任意输入十个数(从大到小、从小到大)? -
融看特尔: #include <stdio.h> main(void) {int i,j,a[10],p=0,t=0,temp; printf("请输入原数组:\n");for(j=0;j<10;j++)scanf("%d",&a[j]);temp=a[0]; for(j=0;j<9;j++){t=j;temp=a[j];for(i=j+1;i<10;i++)if(temp>a[i]) //这是由小到大排序 如果是大到小则改...

冷水江市19620927444: 1、 用“选择排序法”对一维数组中的整数进行排序,使其元素的值按从小到大顺序排序. -
融看特尔:[答案] 选择排序的思路, 每次选最小的数放前边..int n[100]; //100个数进行排序.int m;for(int i = 0; i解析看不懂?免费查看同类题视频解析查看解答

冷水江市19620927444: 用选择法对字符串排序 是什么意思 -
融看特尔: 就是有一个字符串,字母或者数字,利用相对应的ASCΠ码排序.选择法指的是先比较第一个和第二个,按照规则重新排列,接着是第二个(重新排序后的)和第三个比较……以此类推,直至倒数第二个和最后一个比较,完成排序. 例如,对4234811按从小到大排序,就是先比较4和2,2<4,则重排为2434811.接着就是第二个数字4和第三个数字3比较了..就是这样

冷水江市19620927444: 什么是选择排序法 -
融看特尔: 这是冒泡法吧 粘些资料给你: 冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序. 还有“ http://www.d2school.com/bcyl/bhcpp/newls/ls18.htm#18.2

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网