作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

刷题图示:

​编辑

算法介绍:

输入:

输出:

图示过程:

实例演示:

代码展示:

时间复杂度:

空间复杂度:

刷题网站图示:

算法介绍:

直接选择排序也称为简单选择排序,整个过程就是每一趟都将无序区中的所有元素进行逐一比较,找到最小元素(根据要求可以最大-降序)让后与无序区首个元素进行比较

输入:

我们可以把n个数的序列放到数组中(可有序可无序)

输出:

输出一个有序数列(升序或降序)

图示过程:

实例演示:

初始关键字:『 8,5,2,6,10,3,1,4,0,7 』

第一趟排序后:0,『5,2,6,10,3,1,4,8,7』

第二趟排序后:0,1,『2,6,10,3,5,4,8,7』

第三趟排序后:0,1,2,『6,10,3,5,4,8,7』

第四趟排序后:0,1,2,3,『10,6,5,4,8,7』

第五趟排序后:0,1,2,3,4,『6,5,10,8,7』

第六趟排序后:0,1,2,3,4,5,『6,10,8,7』

第七趟排序后:0,1,2,3,4,5,6,『10,8,7』

第八趟排序后:0,1,2,3,4,5,6,7,『8,10』

第九趟排序后:0,1,2,3,4,5,6,7,8,『10』
直接得出最后结果:0 1 2 3 4 5 6 7 8 10

代码展示:

# include <stdio.h>
int a[100];
int main()
{int n;scanf("%d",&n);a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);}int k;for(int i=0;i<n-1;i++){for(int j=i+1;j<n;j++){if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;      }}}for(int i=0;i<n;i++){printf("%d ",a[i]);}} 

测试结果:

时间复杂度:

因为有两层for循环  而且每个都要进行比较 所以时间复杂度为O(n^2);

空间复杂度:

只有一空间变量 k,所以它空间复杂度则为常数O(1);

经典算法之直接选择排序相关推荐

  1. 经典算法学习——直接选择排序

    直接选择排序和直接插入排序相似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区.而直接选择排序是从无序区选一个最小的元素直接放到有序区的 ...

  2. 【学习挑战赛】经典算法之直接选择排序

    活动地址:CSDN21天学习挑战赛 ✅作者简介:C/C++领域新星创作者,为C++和java奋斗中 ✨个人社区:微凉秋意社区

  3. 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序

    <数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...

  4. 第七讲. 经典算法之贪心选择

    第七讲. 经典算法之贪心选择 1. 简介 2. 从一个简单例题开始 3. 一个稍难的题目 4. 最重要贪心算法(可作模板) 4.1 最小生成树 4.2 最短路 5. 最后说几句 1. 简介 贪心算法, ...

  5. Java常见排序算法之直接选择排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  6. 排序算法:简单选择排序算法实现及分析

    简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...

  7. java选择排序代码_Java排序算法总结之选择排序

    本文实例讲述了Java排序算法总结之选择排序.分享给大家供大家参考.具体分析如下: 选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部 ...

  8. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  9. js排序算法详解-选择排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-选择排序 相对于冒泡排序还有一种类似的方法就是选择排序,顾名思义就是选择性排序,什么意思呢? 这么来理解,假设 ...

最新文章

  1. mysql配置日志老化配置_mysql中日志的配置与分析
  2. 操作系统原理第十一章:大容量存储
  3. CTF-攻防世界-reverse进阶-srm-50;(巨详细)
  4. 2 原生Zookeeper 实现分布式锁
  5. java 静态变量生命周期(类生命周期)
  6. 数据湖三种方案的流行度调查
  7. 使用djcproxy创建代理对象
  8. eclipse maven项目 maven build 提示jdk版本不对
  9. go中如何使用easyjson_两分钟让你明白Go中如何继承
  10. jsp中jstl标签的类似 if - else 语句 的语法
  11. android6.0如何锁定程序,如何在Android中制作应用程序锁定应用程序?
  12. 从RTS游戏看游戏开发
  13. eth转入地址_ETH智能合约靶机 审计学习攻略
  14. 一战北邮计专考研经验分享
  15. 【小组成员个人简介】Fantasy
  16. 杰理之AI协议之CMD_SET_BLE_VISIBILITY命令格式【篇】
  17. 中国IT工作者35岁后的发展出路调查报告(4)
  18. target找不到*.xml和*.properties文件 报错:FileNotFoundException
  19. echarts迁徙效果
  20. 谷粒学院(五)---Maven从入门到入魔

热门文章

  1. 新版本友盟分享集成的几点注意事项
  2. This application failed to start because it could not find or load the Qt platform plugin
  3. Python项目实战:使用PySpark对大数据进行分析
  4. 期货破位(期货破位做单法)
  5. Java选择语句练习
  6. 支付路由技术概述以及简单的建设说明
  7. Android上调用百度人脸识别接口
  8. Linux 解压tar.bz2格式文件
  9. axure添加下拉菜单联动
  10. Windows平台的SDK、DDK与WDK