前面讲了那么多的排序,不知道有没有人看,如果有人看,就吱一声,也好让我有信心在写下去了!

不管了,还是那句话,写自己的博文,让别人说去吧,现在应该是,写自己的博文,让别人看去吧!看不

看,是你的事,写不写是我的事!好了,废话少说,开始今天的征程——直接选择排序!

算法思想:所谓直接选择排序,如下:

(1)       在一组对象v[i]~v[n - 1]中选择具有最小关键码的对象

(2)       若它不是这组对象中的第一个对象,则将它与这组对象中的第一个对象对调

(3)       在这组对象中剔除这个具有最小关键码的对象,在剩下的对象v[i + 1]~v[n - 1]中重复执行第

(1)、(2)步,直到剩余对象只有一个为止。

说了这么多,你应该懂得~~。

好了,现在来讲讲我的实现方法。首先需要两层循环,为什么,看了,因为看了思路,直觉告诉我

的,现在我就告诉你是两层的。不要问我为什么?外层循环获得一个新的数,现在我的目的是将这个

新数放到数组中的正确地方去。你懂得。你要选择正确的地方,

内层循环就是控制这个选择的。如何选择,没获得一个新的数,你必须要将它们依次和这个数之前的

数进行比较,如果满足条件,什么条件,这个需要看你的了,因为条件有升序和降序之分的。好了,

满足了条件,就进行调换,数组中两个元素的对换那个是不是有点太简单了,我都不好意思提了。好

了。亲手实现吧。代码贴上:

#include <iostream> #include <stdlib.h> using namespace std; void DirChooseSort(); //直接选择排序 void main() { DirChooseSort(); } void DirChooseSort() { int iNum; //参加排序数的个数 cout<<"请输入参加排序数的个数:"; cin>>iNum; //判断iNum的有效性 if (iNum <= 0) { cout<<"错误的输入值"<<endl; exit(0); } int *Array = new int[iNum]; //动态开辟存放排序数的数组 for (int i = 0; i < iNum; i++) { cin>>Array[i]; for (int j = 0; j < i; j++) { if (Array[j] > Array[i]) { int iTemp; iTemp = Array[i]; Array[i] = Array[j]; Array[j] = iTemp; } } } //输出排序ok的数组 for (int m = 0; m < iNum; m++) { cout<<Array[m]<<","; } }

这是我写的代码,如果大家觉得我写的不对,希望大家给我提出,和我一起分享。谢谢!我的宗旨

是,你我共同学习!

现在回过头来看看,直接选择排序和直接插入排序有什么不同吗?

转载于:https://www.cnblogs.com/JPAORM/archive/2011/03/20/2509899.html

算法不会,尚能饭否之排序——直接选择排序相关推荐

  1. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  2. 排序算法(分类,时间复杂度)(快速排序,插入排序,希尔排序,选择排序,冒泡排序)

    1.排序算法 1.排序的分类 分为内部排序和外部排序,其中内部排序分为插入排序.选择排序.交换排序.归并排序和基数排序.插入排序包括直接插入排序和希尔排序:选择排序包括简单选择排序和堆排序:交换排序包 ...

  3. C语言实现选择排序——简单选择排序算法

    C语言实现简单选择排序 文章目录 C语言实现简单选择排序 简单选择排序算法 1.交换操作 2.简单选择排序算法实现 项目完整代码 运行效果图 简单选择排序算法 1.交换操作 //交换实现 void s ...

  4. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  5. 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)

    1.1 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找 ...

  6. 选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  7. 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程

    day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...

  8. 八大排序:冒泡排序、插入排序、希尔排序、选择排序、堆排序、归并排序、快速排序、基数排序

    [前言] 所有代码段都以升序为例,数组下标从0开始.排序的稳定性即:任意两个相等的数据,排序前后的相对位置不发生变化. [冒泡排序(Bubble Sort)] 它重复地访问过要排序的元素序列,依次比较 ...

  9. 【八大排序详解~C语言版】直接插入排序-希尔排序- 直接选择排序-堆排序-冒泡排序-快速排序-归并排序-计数排序

    八大排序 1.直接插入排序 2.希尔排序 3.直接选择排序 直接选择排序改进 4.堆排序 1.建堆 2.利用堆删除思想来进行排序 5.冒泡排序 6.快速排序 递归实现 非递归实现 7.归并排序 递归实 ...

最新文章

  1. Lucene4 入门(2)–Field类及辅助类说明
  2. emwin生成c文件格式的汉字库,GB2312编码,模拟器可用
  3. android鼾声分析,鼾声分析器
  4. 160329(二)、web.xml配置详解
  5. Windows Server 2003 ×××配置注意事项?
  6. IDEA破解 2017 IDEA license server 激活(可用)
  7. 22.doublewrite/ChangeBuffer/AHI/FNP
  8. AndroidStudio_使用gradle编译代码_打包apk_以及各种打包配置---Android原生开发工作笔记79
  9. 关于字符匹配所引起的的问题
  10. Spring 加载Bean流程
  11. LeetCode 220_Contains Duplicate III
  12. Hexo+Github博客搭建教程
  13. 关于Navicat连接本地数据库失败,报错2003
  14. 光伏工程cad计算机软件,4.23MWp光伏发电示范工程全套电气施工cad图纸
  15. 银保监会回应中国金融机构数据被公开售卖:绝大部分系黑客伪造拼凑
  16. 解决Kubernetes的flannel pod出现Init:RunContainerError问题
  17. 同花顺趋势启动,低位启动 趋势指导指标源码
  18. Android 网络请求库Retrofit简单使用
  19. vsco和lr哪个好_我为什么选择了Lightroom,抛弃了VSCO、snapseed?(附508个预设)
  20. 交换机和路由器的实现原理

热门文章

  1. wordpress 后台404解决办法
  2. 利用jquery 控制select 实例代码
  3. 【实习】T100开发学习笔记
  4. 【Java从0到架构师】RocketMQ 使用 - 集成 SpringBoot
  5. 使用frp实现将内网映射到公网 无需花生壳
  6. 学数据分析究竟要懂哪些统计学?全都给你梳理好了,拿走不谢
  7. 数据体系建设的开端,该如何规划平台?
  8. 财务报表开发实例分析:几个通用维度介绍与关键点
  9. 帆软报表登录-某些用户需要用自定义的登陆界面,有些用户用默认登录界面
  10. commit git 删除文件夹_Git-git删除文件夹/文件(删除/不删除本地文件/文件夹)