IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++简单排序——选择排序 -> 正文阅读

[C++知识库]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(n2),比计数排序要慢,和冒泡排序一样,但没有数据类型和范围的局限(当然,范围不能太大),是一种很好记的不稳定排序。

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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:32:27  更:2022-07-03 10:35:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:58:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码