选择排序(指针法)

描述

用选择法对10个整数排序。

输入

输入包含10个整数,用空格分隔。

输出

输出排序后的结果,用空格分隔。

输入样例 1

复制代码
3 1 4 1 5 9 2 6 5 3

输出样例 1

复制代码
1 1 2 3 3 4 5 5 6 9

输入样例 2

复制代码
2 4 6 8 10 12 14 16 18 20

输出样例 2

复制代码
2 4 6 8 10 12 14 16 18 20

输入样例 3

复制代码
-3 5 7 1 8 2 4 0 -2 9

输出样例 3

复制代码
-3 -2 0 1 2 4 5 7 8 9

代码一(如下):不采用指针

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
	int a[10];
	int i,j,k;
	for (i = 0; i < 10; i++)
	{
		cin >> a[i];
	}
	for (i = 0; i < 10; i++)
	{
		k = i;
		for (j = i + 1; j < 10; j++)
		{
			if (a[k] > a[j])k = j;
		}
		int t = a[k];
		a[k] = a[i];
		a[i] = t;
	}
	for (i = 0; i < 10; i++)
	{
		cout << a[i]<<" ";
	}
	return 0;
}

代码二(如下):采用指针

cpp 复制代码
#include <iostream>
using namespace std;
int exchange(int *);
int main()
{
	int a[10];
	int i;
	int* p = a;
	for (i = 0; i < 10; i++)
	{
		cin >> a[i];
	}
	exchange(a);
	for (i = 0; i < 10; i++)
	{
		cout << a[i]<<" ";
	}
	return 0;
}
int exchange(int *p)
{
	int i, j, k;
	for (i = 0; i < 10; i++)
	{
		k = i;
		for (j = i + 1; j < 10; j++)
		{
			if (*(p + k) > *(p + j))k = j;
		}
		int t = *(p + k);
		*(p + k) = *(p + i);
		*(p + i) = t;
	}
	return *p;
}
相关推荐
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小小龙学IT5 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研6 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
C++ 老炮儿的技术栈8 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qz_Serene10 小时前
C++:类和对象(上)
开发语言·c++
郝学胜-神的一滴11 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
hetao173383712 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
间歇性努力持续性发呆的野生快乐选手14 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
旖旎夜光14 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
hansang_IR15 小时前
【题解】P14468 [COCI 2025/2026 #1] 和谐 / Harmonija(线段树 DDP 版本)
c++·算法·动态dp