排序算法--选择排序

实现逻辑

① 第一轮从下标为 1 到下标为 n-1 的元素中选取最小值,若小于第一个数,则交换

② 第二轮从下标为 2 到下标为 n-1 的元素中选取最小值,若小于第二个数,则交换

③ 依次类推下去......

cpp 复制代码
void print_array(int a[], int n){
	for (int i = 0; i < n; ++i){
		cout << a[i] << " ";
	}
	cout << endl;
}

void selectSort(int arr[], int nSize)
{
	for (int i = 0; i < nSize - 1; ++i)
	{
		int nMin = i;
		for (int j = i + 1; j < nSize; ++j)
		{
			if (arr[nMin] < arr[j])
			{
				nMin = j;
			}
		}
		if (nMin != i)
		{
			int nTemp = arr[nMin];
			arr[nMin] = arr[i];
			arr[i] = nTemp;
		}
	}
}

int main(){
	int arr[] = {10, 8, 11, 7, 4, 12, 9, 6, 5, 3};
	int len = sizeof(arr)/sizeof(arr[0]);
	int newArray[10] = {0};
	
	cout << "排序前:";
	print_array(arr, len);

	selectSort(arr, len);
	
	cout << "排序后:";
	print_array(arr, len);
	return 0;
}

输出结果:

相关推荐
zmzb01031 分钟前
C++课后习题训练记录Day44
开发语言·c++
qq_433554542 分钟前
C++ 二维线性DP
c++·算法·图论
aaa最北边11 分钟前
前缀和算法求数组中某个区间的
c++
獭.獭.13 分钟前
C++ -- STL【set/map和multiset/multimap的使用】
c++·stl·set·map·multimap·multiset
m0_6924571015 分钟前
C++面向过程编程
c++·面向过程编程
waves浪游34 分钟前
进程控制(中)
linux·运维·服务器·开发语言·c++
0 0 037 分钟前
CCF-CSP 36-3 缓存模拟(cache)【C++】
开发语言·c++·算法
满天星83035771 小时前
【Linux】信号(上)
linux·运维·服务器·开发语言·c++
李日灐1 小时前
C++STL: list(双链表) 简单介绍,了解迭代器类型,list sort 的弊端
开发语言·c++·list
打不了嗝 ᥬ᭄1 小时前
【Linux】多路转接 Select , Poll和Epoll
linux·网络·c++·网络协议·http