当前位置: 首页 > news >正文

排序之选择排序(图解)

选择排序的思想其实比较简单,每循环一遍,就找到一个最小的或最大的,找到最小的,就和最左边的换,找到最大的就和嘴右边的换,如下图所示:

此图是找小的,每次遍历一遍就把找到最小的放在左边,直到结束。其实我们可以优化代码,同时找到最大的喝最小的,把最大的放在右边,最小的放在左边,如此循环下去。

void selectSort(int* a, int size)
{
	//选择排序的思想就是每一次找到一个最大的,放到最后面,找到一个最小的放到最前面
	int left = 0;//定义最左边的下标
	int right = size - 1;//定义最右边的下标
	while (left < right)
	{
		int min = left;
		int max = left;//假设最大和最小的都是在最左边
		for (int i = left; i <= right; i++)
		{
			if (a[i] < a[min])//如果小于下标为min的值,就把i的值赋给min;
			{
				min = i;
			}
			if (a[i] > a[max])//如果大于下标为max的值,就把i的值赋给max;
			{
				max = i;
			}
		}
		Swap(&a[min], &a[left]);
		if (max == left)
		{
			Swap(&a[right], &a[min]);
		}
		else
		{
			Swap(&a[max], &a[right]);
		}
		left++;
		right--;
	}
}

 这if语句的的作用是什么,为什么要这么写,你知道吗?

 

相关文章:

  • C++之默认参数详解
  • 力扣(两数相加)C语言
  • 力扣(反转二叉树)C语言
  • 力扣-平衡二叉树(C语言)
  • 力扣—对称二叉树(C语言)
  • 牛客网—二叉树遍历(C语言)
  • C++之引用详解
  • c++之模板初阶
  • C++之string源代码详解
  • 电话号码组合(力扣)
  • vim的基本用法
  • 进程的概念(详解)
  • Linux 基础知识详解
  • 命名管道的学习
  • 牛客网之参数解析问题
  • [NodeJS] 关于Buffer
  • 【comparator, comparable】小总结
  • centos安装java运行环境jdk+tomcat
  • Date型的使用
  • es的写入过程
  • MQ框架的比较
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Quartz初级教程
  • Redis在Web项目中的应用与实践
  • Spark学习笔记之相关记录
  • SpriteKit 技巧之添加背景图片
  • vue-loader 源码解析系列之 selector
  • win10下安装mysql5.7
  • 闭包,sync使用细节
  • 反思总结然后整装待发
  • 解析带emoji和链接的聊天系统消息
  • 一份游戏开发学习路线
  • UI设计初学者应该如何入门?
  • 阿里云ACE认证之理解CDN技术
  • 正则表达式-基础知识Review
  • ​【已解决】npm install​卡主不动的情况
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # 数论-逆元
  • #Linux(make工具和makefile文件以及makefile语法)
  • (06)Hive——正则表达式
  • (7)STL算法之交换赋值
  • (javascript)再说document.body.scrollTop的使用问题
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)大型网站架构演变和知识体系
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Family_物联网
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter