左程云视频算法笔记03 选择排序

2023-11-05

题目二
选择排序
比如一个数组有10个数字,它们的下标 是 0 到 10-1,在3下标位置处有个数字为2,它与0下标位置处的数字对比,如果小于,则放到0下标位置处,然后减减,接着在4下标位置处有个数字5,它与1下标位置处对比,如果小于,调换位置,在减减

#include <iostream>
using namespace std;
void Swap(int arr[], int i, int j)
{
	int temp = arr[j];
	 arr[j] = arr[i];
	 arr[i] = temp;
}

void printarr(int arr[],int x)
{

	for (int i = 0; i < x; ++i)
	{
		cout << arr[i] <<" ";
	}
	cout << endl;
}


void selectSort(int arr[],int x)
{
	int N = x;

	for (int i = 0; i != N; ++i)
	{
		int minValueIndex = i;
		for (int j = i + 1; j< N; ++j)
		{
			minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
		}
		Swap(arr, i, minValueIndex);
	}
}

void test01()
{
	int ar[] = { 1,6,3,33,5,66,2,3,4,6,8 };
	int i = sizeof(ar) / sizeof(ar[0]);
	printarr(ar,i);
	selectSort(ar,i);
	printarr(ar,i);

}
int main()
{
	test01();
}

冒泡排序

#include <iostream>
using namespace std;
void Swap(int arr[], int i, int j)
{
	int temp = arr[j];
	 arr[j] = arr[i];
	 arr[i] = temp;
}

void printarr(int arr[],int x)
{

	for (int i = 0; i < x; ++i)
	{
		cout << arr[i] <<" ";
	}
	cout << endl;
}

void bubbleeSort(int arr[], int x)
{
	int N = x;
	if (arr == NULL)
	{
		return;
	}

	for (int end = N - 1; end >= 0; end--)
	{
	//0~n-1
	//0~n-2
	//0~n-3
		for (int second = 1; second <= end; ++second)
		{
			if (arr[second - 1] > arr[second])
			{
				Swap(arr,second-1,second);
			}
		}
	}
}

void test01()
{
	int ar[] = { 1,6,3,33,5,66,2,3,4,6,8 };
	int i = sizeof(ar) / sizeof(ar[0]);
	printarr(ar,i);
	//selectSort(ar,i);
	bubbleeSort(ar,i);
	printarr(ar,i);

}

插入排序

void insertSort(int arr[], int x)
{
	int N = x;
	if (arr == NULL)
	{
		return;
	}

	for (int end = 1; end < N; ++end)
	{
		int newNumINdex = end;
		while (newNumINdex - 1 >= 0 && arr[newNumINdex - 1] > arr[newNumINdex])
		{
			Swap(arr, newNumINdex - 1, newNumINdex);
			newNumINdex--;
		}
	}
}

void insertSort2(int arr[], int x)
{
	int N = x;
	if (arr == NULL)
	{
		return;
	}

	for (int end = 1; end < N; ++end)
	{
		// 比如你end现在在 5号位置, pre在5-1位置
		//判断条件是pre下标没有越界并且,pre当前的位置的数字大于pre+1的位置,则交换位置
		//pre--之后,就是4号位置,判断条件是pre下标没有越界并且,pre当前的位置的数字大于pre+1的位置,则交换位置
		for (int pre = end-1; pre >= 0 && arr[pre] > arr[pre + 1]; pre--)
		{
			Swap(arr, pre, pre - 1);
	   }
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

左程云视频算法笔记03 选择排序 的相关文章

随机推荐

  • WebService案例入门(基础篇)

    版权申明 本文系作者原创 转载请注明出处 文章出处 http blog csdn net sdksdk0 article details 52106690 作者 朱培 ID sdksdk0 邮箱 zhupei tianfang1314 cn
  • 网校搭建1:构建虚拟机环境

    虚拟机用Virtualbox 安装 deepin 15 11桌面版 正常安装后 安装ssh服务 这样通过Windows就可以直接访问了 step1 安装 sudo apt get install openssh server step2 配
  • PRIME TIME官方教程笔记(静态时序分析)(二)

    step2a 读入parasitic寄生参数 SPEF文件和GPD文件 其中GDP galaxy parasitic datapath SPEF 标准寄生交换文件 standard parastic exchange format read
  • 静态代码检查工具PC-Lint(2)

    3 5 格式检查 PC Lint会检查printf和scanf 及其家族 中的格式冲突 例如 printf c 将产生566告警 因为加号只在数字转换时有用 有超过一百个这样的组合会产生告警 编译器通常不标记这些矛盾 其他的告警还有对坏的格
  • ajax和jquery什么关系,jquery和ajax的关系是什么样的?

    一直以来我们都知道jquery能够调用ajax 就好像理所当然一样 小伙伴们知道它们到底是什么关系吗 本篇文章就一起来了解下 Jquery是一种JavaScript框架 而Ajax Asynchronous JavaScript and X
  • (二) Ubuntu安装新版tensorflow以及目标检测API

    https github com tensorflow models blob master object detection g3doc installation md installation 安装指南 Installation Dep
  • Failed to create the java virtual machine完全解决办法

    转 http www cr173 com html 45240 1 html 一直用eclipse开发java 突然有这么一天 无法启动了 splash窗口显示 Failed to create the Java Virtual Machi
  • Android屏幕适配之--自定义像素的缩放比例来实现屏幕适配

    在Android的适配中 可以采用自定义布局的形式 来通过计算像素的缩放比例来实现适配 大致思路就是 通过拿到设备实际的长宽像素值来除以参考设备的长宽值 得到这一个比例值 在设置控件的长宽值得时候 拿到开发者指定的长宽值乘以这个比例值 就能
  • 软件测试-用例篇

    目录 1 测试用例带给我们的便捷之处 2 测试用例标准 3 测试用例的基本要素 4 设计测试用例的方法 4 1 根据需求去设计测试用例 4 2 软件需求 5 具体的设计测试用例方法 黑盒测试设计测试用例的方法 5 1等价类 5 2 边界值法
  • 【满分】【华为OD机试真题2023 JAVA&JS】基站维修工程师

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 基站维修工程师 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 小王是一名基站维护工程师 负责某区域的基站维护 某地方有n个基站 1
  • HTTP 报文详解

    文章目录 HTTP 请求报文 HTTP 响应报文 请求方法 HTTP headers 通用头域 Cache Control 头域 Date 头域 Pragma 头域 Connection 头域 请求消息 请求头 响应消息 响应头 实体消息
  • harbor搭建-主从复制

    harbor搭建 文章目录 harbor搭建 1 Harbor概述 2 Harbor架构 3 Harbor部署 3 1 hostname配置 3 2 dns配置 3 3 yum源配置 3 4 docker安装和启动 3 5 harbor安装
  • C++调用opencv提取视频关键帧

    欢迎加QQ群309798848交流C C linux Qt 音视频 OpenCV 用的灰度帧差法 编译平台 VS2017 x64 include
  • 11月20日 创建自己的环境任务,使用Pawn环境检测来检测周围的环境,让AI动作更顺滑(动画混合空

    创建自己的环境任务 我们需要让AI在我们的周围进行随机移动 创建Actor 点击Override快速创建函数并添加节点 修改 运行后发现距离我们太近了 修改AI判断的距离和角度 AI角色没有移动 将之前的Fun Location删除即可 继
  • LNMP平台

    LNMP概述 LNMP平台就是Linux Ngnix MySQL PHP的组合架构 需要Linux服务器 MySQL 数据库 PHP解析环境 MySQL安装配置 为了与Nginx PHP环境保持一致 此处选择采用源代码编译的方式安装MySQ
  • 单片机的毕业设计题目项目汇总 - 100例

    文章目录 1前言 2 STM32 毕设课题 3 如何选题 3 1 不要给自己挖坑 3 2 难度把控 3 3 如何命名题目 4 最后 1前言 更新单片机嵌入式选题后 不少学弟学妹催学长更新STM32和C51选题系列 感谢大家的认可 来啦 以下
  • Unity Addressables 热更新 基础

    Unity Addressables 热更新 基础 Addressables 基础解析 Addressable Asset Settings 可寻址资源设置 Profile 配置文件 Diagnostics 诊断工具 Catalog 目录
  • 如何编写CSDN博客-CSDN编辑器

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 用它写博客 将会带来全新的体验哦 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列
  • Mybatis注解方式下处理实体类与数据库表列名不一致

    注解方式下 来源 黑马程序员 mybatis数据库列名与实体类列明不一致 比如 实体类 数据库 查出来的结果不能很好的使用User类的toString方法封装 username属性名和数据库列名一致 能封装好 其他的属性都不一致 解决1 s
  • 左程云视频算法笔记03 选择排序

    题目二 选择排序 比如一个数组有10个数字 它们的下标 是 0 到 10 1 在3下标位置处有个数字为2 它与0下标位置处的数字对比 如果小于 则放到0下标位置处 然后减减 接着在4下标位置处有个数字5 它与1下标位置处对比 如果小于 调换