C++简单排序——选择排序
今天我们来学习一种新的排序方法——选择排序。
上一次我们学习了一种简单的排序——冒泡排序。但有的人啊,他就是说:“冒泡排序太难记了!换一种!” 于是,无敌天才 我决定发一下我认为最好记的排序之一——选排。
选择排序:选出一个作为基本位置,然后再把位置的数和后面的依次比较,交换,将基本位置的数确定好,重复,直到完成排序。
文字看不懂,看看具体操作:将数列: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++简单排序——选择排序相关推荐
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...
- 简单的选择排序(内部排序)
1 /** 2 * 3 */ 4 package com.trfizeng.selectionsort; 5 6 /** 7 * @author trfizeng 内部排序 选择排序-简单选择排序(S ...
- 从简单的选择排序入手,深刻理解程序
深刻理解选择排序 选择排序法基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换:第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换:以此类推, ...
- TZC 1283: 简单排序 —— 选择排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.比较排序过程中,按住某一个数和后面的所有数都比较一下,如果前者大于后者,则进行交换,比较排序过程中显 ...
- python快速排序最简单写法_漫画:最最最最最简单的选择排序
public static int[] selectionSort(int[] array){ if (array.length == 0) return array; for(int i =0;i& ...
- 简单排序--选择排序
选择排序: public void sort(){int out,in,min;for(out=0;out<nElements-1;out++){min = out;for(in=out+1;i ...
- 数据结构/排序/选择排序/简单选择排序
原理 介绍: 原理:每趟排序记录最小记录的索引后交换 类比:猴子搬苞谷,喜欢更大的苞谷.猴子经过1排苞谷,每经过1个苞谷就与心中的苞谷对比,更大就记录当前苞谷的位置,走完这一排苞谷,心中的那个苞谷就是 ...
- 数据结构 排序 java_Java数据结构之排序---选择排序
简单选择排序的介绍: 从给定的序列中,按照指定的规则选出某一个元素,再根据规定交换位置后达到有序的目的. 简单选择排序的基本思想: 假定我们的数组为int [] arr = new int[n],第一 ...
- 不稳定的排序-选择排序
前言 选择排序是直观的排序,通过确定一个最大或最小值,再从待排序的的数中找出最大或最小的交换到对应位置.再选择次之.双重循环时间复杂度为 O(n^2).简单选择排序是不稳定排序. 算法性能 时间复杂度 ...
最新文章
- 20个公司绝对不会告诉你的秘密
- linux两台服务器之间文件/文件夹拷贝
- mysql segmentation fault_mysql Segmentation fault的问题,求教
- 列字段通用excel导入修改版
- C/C++ http协议发送字段,文件,单个和多张图片
- JPA-EntityManager.merge()
- micropython lcd触摸屏显示中文_基于Micropython的天气显示 进程帖
- Docker容器安全性分析
- android studio moudel,Android Studio将module变为library
- dedeCms在首页显示要搜索的关键词
- Java主类结构:变量与常量
- Delphi 7序列号过期的解决方法
- MapInfo中MIF文件和MID文件的格式
- ets交易软件测试简历,ETS工具使用指南
- 必应搜索昨晚开始恢复正常访问
- Win10 制作Ubuntu U盘启动盘
- Web服务器(01)——介绍web服务器
- 1.4、路由初认识及构建园区网
- Rabbitmq- 消费者ack机制与发布者消息确认
- 5g服务器优势特点详解