选择排序(指针法)

描述

用选择法对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;
}
相关推荐
HugoStudio_SWAN4 分钟前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
雾里看山42 分钟前
源码目录、构建目录与 out-of-source build
c++·软件构建·cmake
渡我白衣3 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
如意猴3 小时前
【C++】001--C++入门(1)
开发语言·c++
hetao17338373 小时前
2026-09-01~09-04 hetao1733837 的刷题记录
c++·算法
HugoStudio_SWAN6 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
raindayinrain7 小时前
c++并发
c++
j7~7 小时前
【C++】智能指针的使用及其原理--详解
c++·c++11·内存泄漏·智能指针·raii·boost智能指针
Persistent的粽子!8 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
库玛西8 小时前
深入浅出Linux select网络模型:从底层位图原理到C++面向对象高级封装
linux·服务器·网络·c++·ubuntu