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

在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语言能够起到一定的帮助作用!

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

  1. c语言选择排序法程序设计,C语言选择排序算法及实例代码

    选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直 ...

  2. 选择排序法(C语言)

    选择排序法思路 借此例子,说一下我对选择排序法的理解,还请耐心看完 a[0]=45,a[1]=67,a[2]=87,a[3]=34,a[4]=89 首先,选定第一个,也就是a[0],作为本轮的主要对象 ...

  3. c语言穷举法举例,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  4. c语言驼峰命名法作用,C语言中变量名及函数名的命名规则与驼峰命名法

    在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...

  5. c语言实训模块化程序设计,C语言 实验三 模块化程序设计.doc

    实验掌握一维数组和二维数组的定义.赋值和输入输出的方法 2. 掌握字符数组和字符串函数的使用 3. 掌握与数组有关的算法.掌握函数定义的方法掌握函数实参与形参的传递方式 6. 掌握函数的嵌套调用和递归 ...

  6. c语言上机题库程序设计,C语言上机程序设计题库及答案.docx

    C语言上机程序设计题库及答案 C语言上机程序设计题库[程序设计]功能:根据整型形参m,计算如下公式的值:y=sin(m)*10.[参考代码] double y=0; y=sin(m)*10; retu ...

  7. c语言第八章函数程序设计,C语言程序设计-第八章 函数.ppt

    C语言程序设计-第八章 函数 函数分类(从用户使用角度 ) 1.标准函数(库函数,由系统提供 ): 例如:printf 函数 .sqrt函数. 2.用户自定义函数: 例如,上面程序中的max 函数. ...

  8. c语言上机题库程序设计,c语言上机程序设计题库及答案.pdf

    C 语言上机程序设计题库 [程序设计] 功能:根据整型形参 m,计算如下公式的值:y=sin(m)*10. [参考代码] double y=0; y=sin(m)*10; return(y); 功能: ...

  9. 进退法和黄金分割法c语言程序,进退法黄金分割法c语言编程

    优化设计作业,用c语言分别对进退法和黄金分割法进行编程 进退法 #include "stdio.h" void main() { float y,y1,y2,y3,x,x1,x2, ...

最新文章

  1. android 添加日程失败,Andriod向系统日历添加日程
  2. python到底可以做什么-Python究竟是什么?能干嘛?
  3. zz STL 优先队列
  4. iphone导出通讯录到安卓_科技资讯:iPhone苹果手机换新机如何将旧手机的通讯录导出到新的...
  5. (转)计算机网络基础知识总结
  6. H264/ACC数据使用librtmp推流到服务器
  7. matlab和气象,matlab在气象上的应用
  8. 12.11scrum report (第十次)
  9. PHP通过反射获得类源码
  10. 奥本海姆《数字信号处理》课后题解析(一)
  11. IDEA This inspection performs unresolved SQL references check
  12. java中如何插入表格_Java如何向Word文档中添加表格?
  13. MySQL原理与实践(三):由三种数据结构引入MySQL索引及其特性
  14. html双引号打不正确,双引号要占一个空格吗 为什么打双引号要空格一下才能出来...
  15. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇
  16. oracle 00002,imp-00002错误
  17. 数据结构——单向链表
  18. 超详细MySQL安装教程(Windows)
  19. 滚动条自动显示和隐藏
  20. Intel Turbo Boost (睿频)技术简介

热门文章

  1. c语言如何将值赋给结构体指针,C语言给结构体指针赋值
  2. [Hades_方法]Hades学习方法和资料
  3. 【调剂】北京林业大学工学院招收自动化,计算机等专业调剂生
  4. 运动耳机什么牌子的好、运动耳机排行榜10强
  5. 人工智能+大数据,实现智慧出行新服务
  6. 2019年台湾饭店业务盘点
  7. 牛客网 新田忌赛马
  8. 计算机软件系统的分成,计算机的软件系统一般分为
  9. 数电笔记总结(二)(逻辑代数基础)
  10. 量子计算与量子信息之Python-qiskit实现量子隐形传态