今天我们来学习一种新的排序方法——选择排序。

上一次我们学习了一种简单的排序——冒泡排序。但有的人啊,他就是说:“冒泡排序太难记了!换一种!” 于是,无敌天才 我决定发一下我认为最好记的排序之一——选排。

选择排序:选出一个作为基本位置,然后再把位置的数和后面的依次比较,交换,将基本位置的数确定好,重复,直到完成排序。

文字看不懂,看看具体操作:将数列:4 9 2 8 6  从小到大排序。

第一步: 4 9 2 8 6      // 基本位置是第一位:4,开始比较。4<9,不交换。

第二步: 2 9 4 8 6      // 接下来将 4 2 比较,交换。

第三步: 2 9 4 8 6      // 将 2 8 比较,不交换。

第四步: 2 9 4 8 6      // 将 2 6 比较,不交换。

//现在完成了最小数放在最前面,用了4次比较,1次交换。

第五步: 2 4 9 8 6      // 基本位置是第二位:9,开始比较。4<9,交换。

第六步: 2 4 9 8 6      // 将 4 8 比较,不交换。

第七步: 2 4 9 8 6      // 将 4 8 比较,不交换。

//我们已经将第2小数放到第2位,用了3次比较,1次交换。

第八步: 2 4 8 9 6      // 将 9 8 比较,交换。

第九步: 2 4 6 9 8     // 将 8 6 比较,交换。

//我们已经将第3小数放到第3位,用了2次比较,2次交换。现在要将第4小数放到第4位。

第十步: 2 4 6 8 9      // 将 9 8 比较,交换。

这时,程序结束了。我们也将数列排好了。每一次的交换如下:

4 9 2 8 6

2 9 4 8 6

2 4 9 8 6

2 4 8 9 6

2 4 6 9 8

2 4 6 8 9

排序结束。

知道了基本原理,代码也就好打了(将整形的数从小到大排序):


#include <iostream>
#include <cmath>
using namespace std;int n,i,j,a[2000];
bool t;              //定义变量int main()
{cin >>n;for (i=1;i<=n;i++)cin >>a[i];       //输入for (i=1;i<n;i++)        //从1开始,最后一位不用比for (j=i+1;j<=n;j++)if (a[i]>a[j])        //a[i]是基本位,a[j]是当前位swap(a[i],a[j]);     //交换for (i=1;i<=n;i++)cout <<a[i] <<" ";        //输出return 0;        //华丽结束
}

选择排序时间复杂度为O(n²),比计数排序要慢,和冒泡排序一样,但没有数据类型和范围的局限(当然,范围不能太大),是一种很好记的不稳定排序。

选择排序讲解完毕,别忘了点个赞哦。

C++简单排序——选择排序相关推荐

  1. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  2. 简单的选择排序(内部排序)

    1 /** 2 * 3 */ 4 package com.trfizeng.selectionsort; 5 6 /** 7 * @author trfizeng 内部排序 选择排序-简单选择排序(S ...

  3. 从简单的选择排序入手,深刻理解程序

    深刻理解选择排序 选择排序法基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换:第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换:以此类推, ...

  4. TZC 1283: 简单排序 —— 选择排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.比较排序过程中,按住某一个数和后面的所有数都比较一下,如果前者大于后者,则进行交换,比较排序过程中显 ...

  5. python快速排序最简单写法_漫画:最最最最最简单的选择排序

    public static int[] selectionSort(int[] array){ if (array.length == 0) return array; for(int i =0;i& ...

  6. 简单排序--选择排序

    选择排序: public void sort(){int out,in,min;for(out=0;out<nElements-1;out++){min = out;for(in=out+1;i ...

  7. 数据结构/排序/选择排序/简单选择排序

    原理 介绍: 原理:每趟排序记录最小记录的索引后交换 类比:猴子搬苞谷,喜欢更大的苞谷.猴子经过1排苞谷,每经过1个苞谷就与心中的苞谷对比,更大就记录当前苞谷的位置,走完这一排苞谷,心中的那个苞谷就是 ...

  8. 数据结构 排序 java_Java数据结构之排序---选择排序

    简单选择排序的介绍: 从给定的序列中,按照指定的规则选出某一个元素,再根据规定交换位置后达到有序的目的. 简单选择排序的基本思想: 假定我们的数组为int [] arr = new int[n],第一 ...

  9. 不稳定的排序-选择排序

    前言 选择排序是直观的排序,通过确定一个最大或最小值,再从待排序的的数中找出最大或最小的交换到对应位置.再选择次之.双重循环时间复杂度为 O(n^2).简单选择排序是不稳定排序. 算法性能 时间复杂度 ...

最新文章

  1. 20个公司绝对不会告诉你的秘密
  2. linux两台服务器之间文件/文件夹拷贝
  3. mysql segmentation fault_mysql Segmentation fault的问题,求教
  4. 列字段通用excel导入修改版
  5. C/C++ http协议发送字段,文件,单个和多张图片
  6. JPA-EntityManager.merge()
  7. micropython lcd触摸屏显示中文_基于Micropython的天气显示 进程帖
  8. Docker容器安全性分析
  9. android studio moudel,Android Studio将module变为library
  10. dedeCms在首页显示要搜索的关键词
  11. Java主类结构:变量与常量
  12. Delphi 7序列号过期的解决方法
  13. MapInfo中MIF文件和MID文件的格式
  14. ets交易软件测试简历,ETS工具使用指南
  15. 必应搜索昨晚开始恢复正常访问
  16. Win10 制作Ubuntu U盘启动盘
  17. Web服务器(01)——介绍web服务器
  18. 1.4、路由初认识及构建园区网
  19. Rabbitmq- 消费者ack机制与发布者消息确认
  20. 5g服务器优势特点详解

热门文章

  1. 孩子叛逆期不想上学怎么办
  2. 七、consul服务注册与发现
  3. 使用PHP将长文章分页
  4. 手把手教你完成图像分类实战——基于卷积神经网络的图像识别
  5. 基于android的新闻阅读系统
  6. 什么是sku,sku信息接入方案
  7. 练习2-12 输出华氏-摄氏温度转换表(15 分)
  8. 三星I9100/I9100G/I9250
  9. 【Crypto】wp
  10. HandlerThread的解析