【模板】选择排序

选择排序实现链表排序与模板函数解析 本文介绍了如何使用选择排序算法对整数链表进行排序,并通过C++代码展示了具体的实现过程。此外,文章还深入探讨了模板函数的相关知识点,包括模板函数的目的、模板前缀的作用、参数匹配规则、实例化时机以及模板类实现中的注意事项。同时,还涉及了迭代器的使用、节点操作函数、数据类型泛化方法等内容,适用于C++编程中对数据结构与泛型编程的理解与应用。 阅读详情

选择排序基本思想

简单选择排序的第i趟,总是从(elem[i],elem[i+1],...,elem[n-1])的未排序元素中选择最小的元素加入,然后只通过一次交换将当前最小的元素放在正确的位置。

最好、最坏、平均时间复杂度

都是o(n^2),因为无论如何都要进行的循环次数是:

\sum_{i=0}^{n-2}_(n-1-i) = n(n-1)/2

稳定性

选择排序是不稳定的!如序列[5 8 5 2 9], 我们知道第一次选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。

特性

1.思路简单,性能稳定,无论什么数据进去都是o(n^2)的时间复杂度。

2.不占用额外的内存空间。

//选择排序 
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
void swap(int a[],int elem1,int elem2)
{
	int tmp = a[elem1];
	a[elem1] = a[elem2];
	a[elem2] = tmp;
}
void selectSort(int a[],int n)//选择排序:总是选择当前最小的元素加入序列 
{
	for(int i=0;i<n-1;i++)//依次遍历,寻找当前最小的元素 
	{
		int lowIndex = i;//记录a[i,...,n-1]中最小的元素下标,为最后交换准备 
		for(int j=i+1;j<n;j++)
		{
			if(a[j]<a[lowIndex]) lowIndex = j; //更新 
		}
		swap(a,lowIndex,i);//交换 
	}
 } 
 int main(void)
{
	int n = 10;
	int arr[10] = {0};
	for(int i=0;i<n;i++)
	{
		arr[i]=rand()%100;
	}
	for(int i=0;i<n;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<endl; 
	selectSort(arr,n);
	for(int i=0;i<n;i++)
	{
		cout<<arr[i]<<" ";
	}
	return 0;
} 

 

选择排序算法的c++模板 选择排序算法的c++模板,适合初学数据结构与算法的,有详细的算法思路 立即下载

相关推荐

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2570

【选择排序模板】

选择排序(Selection Sort)是一种简单直观的排序算法,它每次从待排序序列中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),直到所有元素都被排序。在待排序序列中,找到最小(或最大)的元素。将最小(或最大)的元素与待排序序列的第一个元素交换位置,将该元素视为已排序部分的末尾(或开头)。在剩余的待排序序列中,重复步骤1和步骤2,直到所有元素都被排序。选择排序的时间复杂度为O(n^2),其中n是待排序序列的长度。

学习愚公的博客 297

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

选择排序(c语言)

中文名:选择排序英文名:Selection Sort、时间复杂度:O(n^2)稳定性:不稳定的排序算法原理:第一次从待排序的元素中选出最小(或最大)的一个元素a,记录其位置的下标,然后将剩下的元素依次与元素a相比较,直到找到剩下的元素中最小的元素b(且元素b比元素a小),二者交换位置(第一次循环结束),以此类推,直到全部待排序的数据元素的个数为零。

m0_64681789的博客 2万+

Deepseek:物理神经网络PINN入门教程

物理信息网络(Physics-Informed Neural Networks, PINN)是一种将物理定律(如偏微分方程、守恒定律等)嵌入神经网络训练过程的深度学习方法。其核心思想是通过神经网络同时拟合观测数据并满足物理约束,从而解决传统数值方法难以处理的高维、噪声数据或复杂边界条件问题。

金石软件 9300

Centos7安装NVIDIA驱动并在docker容器中使用GPU

Centos7安装NVIDIA驱动并在docker容器中使用GPU

运维giao的博客 2085

排序 - 选择排序(Selection sort)

它的基本思想是: 首先在未排序的数列中选出最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续选出最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

埃泽漫笔 791

52-Halcon-- smooth_object_model_3d函数功能(滑处理3D对象模型)

Halcon中smooth_object_model_3d算子详解 该算子用于3D模型平滑处理,提供三种算法:'laplacian'(快速去噪)、'taubin'(高质量防收缩)和'low_pass'(频域滤波)。核心参数包括迭代次数(默认5)、平滑强度(0-1)和边缘保护选项。典型应用包括扫描数据去噪、CAD模型光顺和逆向工程优化。支持自适应平滑、结合模型简化等高级技巧,并可通过分块处理优化大型模型性能。参数组合需根据具体场景选择,如快速去噪推荐拉普拉斯方法(5次迭代,强度0.3),特征保持推荐低通滤波(

weixin_45590420的博客 873

三种常见的排序模板

如果要对具有n个元素的数组a进行排序,初始状态时,可以认为已排序序列为a[0],待排序序列为a[1]~a[n-1],排序过程如图所示。选择排序的基本思想是:每次从待排序序列中选择一个关键字最小的元素,(当需要按关键字升序排列时),顺序排在已排序序列的最后,直至全部排完。在选择类排序方法中,根据从待排序序列中选择元素的方法不同,又分为不同的选择排序方法,其中最简单的是通过顺序比较找出待排序序列中的最小元素,称为简单选择排序,如图所示。(1)首先将第一个元素与第二个元素进行比较,若为逆序,则将两元素交换。

2301_80708596的博客 1399

OsgEarth —— 笔记6 - 开发阶段加入漫游飞行(附源码)

效果      视频地址   源码 源码下载请私信   代码      代码相关内容:           OSG —— 笔记1 - 指令调用模型           OsgEarth —— 笔记1 - 创建地球的earth文件           OsgEarth —— 笔记2 - Qt窗口加载earth地球(附源码)           OsgEarth —— 笔记3 - 为地

1896

工业级Modbus ASCII实时监控系统(WinForms完整实现)

本文介绍了一个基于WinForms的工业级Modbus ASCII实时监控系统实现方案。该系统采用经典工控界面布局,包含串口配置、数据采集控制和实时数据显示三大区域。核心功能包括:串口通信参数设置、Modbus从站地址配置、寄存器数据采集、实时数据表格展示和趋势图绘制。系统通过ModbusAsciiClient类实现通信核心,采用定时器轮询机制采集数据,支持最多100个数据点的历史趋势显示。界面设计注重用户体验,配置区位于左侧,主显示区在右侧,底部为状态和日志区,符合工业控制系统的操作习惯。代码示例展示了窗

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 279

c++模板,选择排序,字符数组,字符串

模板不可以直接使用比如一寸照,不能直接不p照片就用。不是万能的,不如不能把小狗的照片p到刚刚一寸照上。

周周的博客 1230

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++选择排序模板

template void Swap(T& a, T& b) { T c = a; a = b; b = c; } template void SelectionSort(T* arr, int n) //选择排序 { for(int i = 0;

恨天低 876

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

选择排序模板

选择排序模板

weixin_39104847的博客 492

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

c++ java 选择排序,C++模板元编程实现选择排序

前言模板在C++一直是比较神秘的存在。 STL 和 Boost 中都有大量运用模板,但是对于普通的程序员来说,模板仅限于使用。在一般的编程中,很少会有需要自己定义模板的情况。但是作为一个有理想的程序员,模板是一个绕不过去的坎。由于C++标准的不断改进,模板的能力越来越强,使用范围也越来越广。在C++11中,模板增加了 constexpr ,可变模板参数,回返类型后置的函数声明扩展了模板的能力;增加...

weixin_29369363的博客 165

选择排序(模板)

基本思想: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 直接选择排序的特性总结: 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 #include <vector> //升序(小于) template<class T> b...

晶凌玄夜的博客 519

用模板写选择排序-链表

今天,我们一起用mo'b

尹成的技术博客 2244

c++模板选择排序

#ifndef _BUBBLESORT_H_//bubblesort.h #define _BUBBLESORT_H_ #define MAX_SIZE 100 #include using namespace std; //template template class DataList { private: ElemType data[MAX_SIZE]; int size; void

leafinsnowfield的专栏 691

排序模板 选择法排序

#include"iostream" using namespace std;   template   void Sort(T *p,int n)   {       int i,j,index;       T t,min;       for(i=0;i     {           min=*(p+i);           index=i;           f

duchunshui的博客 516

C++用模板的方式进行选择排序

测试 char 数组、int数组。使用通用 对数组进行排序。//排序后进行数组打印。//char数组测试。

weixin_52513174的博客 138

利用模板进行数组的选择排序

用模板函数进行不同类型数据的选择排序

m0_64727698的博客 803

模板实现选择排序(c++代码实现)

模板实现选择排序 代码如下: #include<iostream> using namespace std; template<class T> void myswap(T &a,T &b) { T temp = a; a = b; b = temp; } template<class T> void sort(T arr[],int len) { for (int i = 0; i < len; i++) { int max = i;

m0_53175693的博客 694

利用c++模板实现选择排序

/* SelectSort.hpp */ #ifndef _SELECT_SORT_H_ #define _SELECT_SORT_H_ template bool SelectSort(T *pInput, int nLen) { int i = 0; int j = 0; int nMin = 0; T tTemp; if(!pInput) { return false

zhuwenfeng的专栏 752

函数模板实现选择排序

#include<iostream> using namespace std; #include<string> //选择排序 template<typename T> void mysort(T arr[], int len) { for (int i = 0; i < len; i++) { int max = i; //认定最大值下标 for (int j = i + 1; j < len; j++) { if (arr

qq_51419689的博客 865
上一篇: 【模板】快速排序及寻找区间第k大
下一篇: 【模板】归并排序
coderwait
博客等级 码龄9年 20粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值