c语言选择排序法程序设计,C语言基础之选择排序算法和代码

在利用C语言进行编写程序的过程中,我们会常常通过算法及其代码来进行相关程序的编写工作。今天课课家笔者先给大家介绍C语言算法中的选择排序算法以及代码。那么到底什么是选择排序算法呢?下面由笔者慢慢道来。

47c7e9706157ec4fa9d1445fb1d167bc.png

在C语言中,选择排序是排序算法的一种常用的算法,选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序等。在这里笔者用比较简单的以从小到大排序为例来给大家进行讲解。

按照前面提到的我们先进行基本思想的概念确定,以从小到大的选择排序的基本思想为:选出最小的数,把它放在第一个位置。然后选出第二小的数,放在第二个位置,以此类推,直到所有的数从小到大排序。在实现中我们先确定第i小的数所在的位置,然后将其与第i个数进行交换。下面是以对3241进行选择排序说明排序过程,我们通过使用min_index记录当前最小的数所在的位置。

第1轮排序过程(寻找第1小的数所在的位置)

3241(最初,min_index=1)

3241(3>2,所以min_index=2)

3241(2<4,所以min_index=2)

3241(2>1,所以min_index=4,这时候确定了第1小的数在位置4)

1243(第1轮结果,将3和1交换,也就是位置1和位置4交换)

第2轮排序过程(寻找第2小的数所在的位置)

1243(第1轮结果,min_index=2,只需要从位置2开始寻找)

1243(4>2,所以min_index=2)

1243(3>2,所以min_index=2)

1243(第2轮结果,因为min_index位置刚好在第2个位置,无需交换)

第3轮排序过程(寻找第3小的数所在的位置)

1243(第2轮结果,min_index=3,只需要从位置2开始寻找)

1243(4>3,所以min_index=4)

1234(第3轮结果,将3和4交换,也就是位置4和位置3交换)

到此所有的排序工作完毕。

◎总结及实现

选择排序对大小为N的无序数组R[N]进行排序,进行N-1轮选择过程。第i轮选取第i小的数,并将其放在第i个位置上。当第N-1次完成时,第N小(也就是最大)的数自然在最后的位置上。下面笔者给出选择排序的C语言实现。

#include

#include

#defineN8

voidselect_sort(inta[],intn);

//选择排序实现

voidselect_sort(inta[],intn)//n为数组a的元素个数

{

//进行N-1轮选择

for(inti=0;i

{

intmin_index=i;

//找出第i小的数所在的位置

for(intj=i+1;j

{

if(a[j]

{

min_index=j;

}

}

//将第i小的数,放在第i个位置;如果刚好,就不用交换

if(i!=min_index)

{

inttemp=a[i];

a[i]=a[min_index];

a[min_index]=temp;

}

}

}

intmain()

{

intnum[N]={89,38,11,78,96,44,19,25};

select_sort(num,N);

for(inti=0;i

printf("%d",num[i]);

printf("\\n");

system("pause");

return0;

}

PS:选择排序是一种不稳定的排序算法,可能会打乱两个相同数字的原有顺序。比如序列58529,按照从小到大排序的方法,第一轮会将第1个数字5会和2交换,那么原序列中2个5的相对前后顺序就被调乱了,所以选择排序是一种不稳定的排序算法。

本次C语言基础之选择排序算法和代码的讲解到此暂告一段落,如果以后有什么相关内容进行补充或者修改的话,笔者会在此继续进行相关内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习C语言能够起到一定的帮助作用!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是古老而长青的编程语言,它具备了现代程序设计基础要求,它的语是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。 本课程是零基础的编程入门课,是后续的操作系统、编译原理、体系结构等课程的基石。 —— 课程团队 课程概述 程序设计是一门基础课程。对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯;对于非计算机专业而言,程序设计的学习有助于理解计算机的能力所在,理解哪些是计算机擅长解决的问题,怎样的方式方是计算机擅长的手段,从而能更好地利用计算机来解决本专业领域内的问题。 C语言是古老而长青的编程语言,它具备了现代程序设计基础要求,它的语是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。 对于非计算机专业的学生,学习本课程的主要目的是掌握程序设计的基本方C语言是教学媒介。但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。 本课程是零基础的入门课程,完成本课程之后,就能具有初步的运用C语言编写程序的能力。要想完整的学习C语言,还需要进一步学习本课程的后续课程——《C语言程序设计进阶》。 程序设计是实践性很强的课程,该课程的学习有其自身的特点,听不会,也看不会,只能练会。你必须通过大量的编程训练,在实践中掌握编程知识,培养编程能力,并逐步理解和掌握程序设计的思想和方。在这里所提供的,只是基础的知识讲解,要想学会编程,还需要更多时间的投入和努力。 为了学习编程,你需要有一台计算机,安装必要的编程软件。无论是MS Windows、Mac OS X还是Linux,都有适合C语言编程的软件。如果搞不定自己电脑上的编程软件,我们也会提供在网页中编写、运行C语言程序的方。 课程大纲 01 程序设计C语言 课时 1 计算机和编程语言 2 C语言 3 第一个程序 02 计算 课时 1 变量 2 数据类型 3 表达式 4 在线评判系统 03 判断与循环 课时 1 判断 2 循环 04 进一步的判断与循环 课时 1 逻辑类型和运算 2 级联和嵌套的判断 3 多路分支 4 循环的例子 5 判断和循环常见的错误 05 循环控制 课时 1 循环控制 2 多重循环 3 循环应用 06 数组与函数 课时 1 数组 2 函数的定义与使用 3 函数的参数和变量 4 二维数组 07 数组运算 课时 1 数组运算 2 搜索 3 排序初步 08 指针与字符串 课时 1 指针 2 字符类型 3 字符串 4 字符串计算 预备知识 作为第一门编程课,本课程可以零基础学习。大学计算机(大学计算机基础、计算思维导论)等课程对于理解本课程的部分内容有帮助,但这些课程的学习不是必须的。 证书要求 课程的总分达到60分以上,可以获得本课程的合格证书。 课程的总分达到85分以上,可以获得本课程的优秀证书。 参考资料 何钦铭、颜晖,《C语言程序设计(第3版)》,高等教育出版社,2015年,ISBN 978-7-04-043128-3 颜晖、张泳,《C语言程序设计实验与习题指导(第3版)》,高等教育出版社,2015年,ISBN 978-7-04-043563-4 常见问题 Q:我需要特殊版本的计算机吗? A:任何计算机都可以用于C语言编程,包括但不限于各个版本的MS Windows、各个版本的Mac OS X、各种发行版本的Linux。有的手机有app也能实现C语言编程,不过我们不推荐那么小的屏幕。 Q:我需要安装特定的软件才能做这门课的作业吗? A:任何C语言的开发工具都可以。课程演示会使用Dev C++及命令行环境,但是你使用任何其他开发工具都不会影响做作业的正确性。可以使用的其他工具包括但不限于MS Visual Studio、C-Free等。 Q:每周会发布多少时间的视频?我需要花多少时间来学习? A:我们按照90分钟的授课时间来设计课程。但是发布的视频肯定小于90分钟,一般在50到70分钟左右。因为在线下上课时,老师可能会回顾一下上周的内容、某些内容会看学生的反应重复几遍、会当堂问做一些提问,以及在各种软件等教学工具之间切换,这些都要花点时间,而这些在线上课程中都不存在了,所以视频的时间不会正好是90分钟。但是一般我们设计课程需要1:1.5到1:2的课后学习时间,这包括预习、作业、练习和复习的时间,所以每周大约需要花费三到五小时的时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值