python选择排序算法图解_简单选择排序算法(C语言详解版)
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上。
例如对无序表{56,12,80,91,20}采用简单选择排序算法进行排序,具体过程为:
第一次遍历时,从下标为 1 的位置即 56 开始,找出关键字值最小的记录 12,同下标为 0 的关键字 56 交换位置:
第二次遍历时,从下标为 2 的位置即 56 开始,找出最小值 20,同下标为 2 的关键字 56 互换位置:
第三次遍历时,从下标为 3 的位置即 80 开始,找出最小值 56,同下标为 3 的关键字 80 互换位置:
第四次遍历时,从下标为 4 的位置即 91 开始,找出最小是 80,同下标为 4 的关键字 91 互换位置:
到此简单选择排序算法完成,无序表变为有序表。
简单选择排序的实现代码为:
#include
#include
#define MAX 9
//单个记录的结构体
typedef struct {
int key;
}SqNote;
//记录表的结构体
typedef struct {
SqNote r[MAX];
int length;
}SqList;
//交换两个记录的位置
void swap(SqNote *a,SqNote *b){
int key=a->key;
a->key=b->key;
b->key=key;
}
//查找表中关键字的最小值
int SelectMinKey(SqList *L,int i){
int min=i;
//从下标为 i+1 开始,一直遍历至最后一个关键字,找到最小值所在的位置
while (i+1length) {
if (L->r[min].key>L->r[i+1].key) {
min=i+1;
}
i++;
}
return min;
}
//简单选择排序算法实现函数
void SelectSort(SqList * L){
for (int i=0; ilength; i++) {
//查找第 i 的位置所要放置的最小值的位置
int j=SelectMinKey(L,i);
//如果 j 和 i 不相等,说明最小值不在下标为 i 的位置,需要交换
if (i!=j) {
swap(&(L->r[i]),&(L->r[j]));
}
}
}
int main() {
SqList * L=(SqList*)malloc(sizeof(SqList));
L->length=8;
L->r[0].key=49;
L->r[1].key=38;
L->r[2].key=65;
L->r[3].key=97;
L->r[4].key=76;
L->r[5].key=13;
L->r[6].key=27;
L->r[7].key=49;
SelectSort(L);
for (int i=0; ilength; i++) {
printf("%d ",L->r[i].key);
}
return 0;
}
运行结果:
13 27 38 49 49 65 76 97
python选择排序算法图解_简单选择排序算法(C语言详解版)相关推荐
- 查询数据的排序的位置_简单选择排序C++实现
简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为0的开始,将下标为0的这个数与后面的n-1个进行比较:找出最小或者最大的放在下标为0的这个位置 ...
- 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
笔记本电脑 是现在人们使用的比较多的数码产品,不仅仅办公需要,而且现在娱乐也能够使用.笔记本电脑也分为商务笔记本和普通笔记本.今天小编要给大家介绍的这款笔记本电脑是华硕vm510l.华硕是我们我家的自 ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- Java入门项目:实现简单学生管理系统(逐个功能详解版)
文章目录 前言 一.学生管理系统实现思路 二.定义学生类 三.主界面的代码编写 四.添加学生的代码编写 五.查看所有学生的代码编写 六.删除学生的代码编写 七.修改学生的代码编写 八.项目结构和源码 ...
- 怎么查看python是否安装好了pyinstaller_Python PyInstaller安装和使用教程(详解版)...
在创建了独立应用(自包含该应用的依赖包)之后,还可以使用 PyInstaller 将 Python 程序生成可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上 ...
- java 排序原理_简单选择排序算法原理及java实现(超详细)
简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...
- 算法一之简单选择排序
一. 选择排序的思想 选择排序的基本思想是:每一趟在n-i+1(i=1,2,-n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序. ...
- 选择排序java代码_JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
[简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...
最新文章
- 关于分布式多级缓存架构,也许你一直考虑的太简单了
- HP Webinspect 10 访问wap的url
- boost::sort模块实现在大多数排序的数组示例上展开排序
- 阿里云积极落实等级保护制度,政务云全国首个通过等保2.0合规评测
- ef mysql code first_关于ef+codefirst+mysql(入门)
- C语言和设计模式(命令模式)
- 富士通大数据架构解决方案闪耀存储峰会
- 薛定谔Maestro教程--用户界面1
- 0基础,如何快速学习自媒体,详细教程
- 交互技术基础(复习)
- python对接蚂蚁验证码平台
- Qt解决连接https报错
- 从零学习Belief Propagation算法(二)
- 计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1
- 华芯通关闭引发的深度思考
- 大数据起步之wormhole初识
- netcat 使用方法
- 33个高能CSS选择器让我受益匪浅
- c语言编程实践题,C语言实践编程题
- Zeal离线文档下载,以及报错解决方法
热门文章
- Flutter 成功在鸿蒙上运行;微信 8.0 发布;支付宝和微信支付达到反垄断标准 | 极客头条...
- 京东将上线“自营房产”业务;iPhone 12 或取消附赠有线耳机;OpenBSD 6.7 发布 | 极客头条...
- 技术大佬:我去,你写的 switch 语句也太老土了吧!
- 另类数据解读 : 口罩是什么时候成为硬通货的?!
- 主链增幅最高飚至 152%,主流币却惊现回落;以太坊发币速度持续放缓
- 国内首款 5G 机型开售;Google Chrome 大部分插件无人用;Firefox 69 Beta 9 发布 | 极客头条...
- 华为拟安装“俄版安卓”;百度回应内部贪腐;Android Studio 3.5 RC2 发布 | 极客头条...
- 漫画:一文学会面试中常问的 IO 问题!
- 真壕!腾讯员工平均月薪 7 万!
- 程序员如何借助 AI 开挂股票神预测?| 技术头条