排序算法--选择排序

实现逻辑

① 第一轮从下标为 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;
}

输出结果:

相关推荐
让我们一起加油好吗32 分钟前
【基础算法】01BFS
数据结构·c++·算法·bfs·01bfs
_w_z_j_1 小时前
C++11----列表初始化和initializer_list
开发语言·c++
1白天的黑夜12 小时前
递归-24.两两交换链表中的节点-力扣(LeetCode)
数据结构·c++·leetcode·链表·递归
1白天的黑夜12 小时前
递归-206.反转链表-力扣(LeetCode)
数据结构·c++·leetcode·链表·递归
Fcy6482 小时前
C++ vector容器的解析和使用
开发语言·c++·vector
无限进步_2 小时前
C语言文件操作全面解析:从基础概念到高级应用
c语言·开发语言·c++·后端·visual studio
_OP_CHEN2 小时前
C++基础:(十五)queue的深度解析和模拟实现
开发语言·c++·stl·bfs·queue·容器适配器·queue模拟实现
sulikey2 小时前
一文彻底理解:如何判断单链表是否成环(含原理推导与环入口推算)
c++·算法·leetcode·链表·floyd·快慢指针·floyd判圈算法
起床气2332 小时前
C++海战棋开发日记(序)
开发语言·c++
_码力全开_3 小时前
P1005 [NOIP 2007 提高组] 矩阵取数游戏
java·c语言·c++·python·算法·矩阵·go