选择排序
Description
输入n个数组,将其从小到大排列。
输入格式: 第一行一个整数n,表示数的个数,3<=n<=100,第二行有n个整数,中间用一空格隔开。
输出格式:一行n个整数,每两个数之间用一空格隔开。
请使用选择排序算法完成本题。
输入格式: 第一行一个整数n,表示数的个数,3<=n<=100,第二行有n个整数,中间用一空格隔开。
输出格式:一行n个整数,每两个数之间用一空格隔开。
请使用选择排序算法完成本题。
Sample Input
5
1 3 2 5 4
Sample Output
1 2 3 4 5
python解法
# 读取输入
n = int(input().strip())
nums = list(map(int, input().strip().split()))
# 选择排序算法
for i in range(n):
# 假设当前位置是最小的
min_idx = i
# 遍历剩余部分寻找最小值的索引
for j in range(i+1, n):
if nums[j] < nums[min_idx]:
min_idx = j
# 交换找到的最小值和当前位置的值
nums[i], nums[min_idx] = nums[min_idx], nums[i]
# 输出排序后的数组
print(' '.join(map(str, nums)))
c++解法
#include<bits/stdc++.h> // 引入标准库头文件
using namespace std;
int a[100]; // 定义一个大小为100的整型数组a
int main() {
int n;
cin >> n; // 输入数组的长度n
// 读取n个整数到数组a中
for(int i = 0; i < n; i++) {
cin >> a[i];
}
// 选择排序算法,进行n次循环,每次找到未排序部分的最大值,并交换到数组末尾
for(int i = 0; i < n; i++) {
int max = 0; // 初始化max为0,用于存储当前未排序部分的最大值的下标
// 在未排序部分(从1到n-i-1)中查找最大值
for(int j = 1; j < n - i; j++) {
// 如果找到比当前最大值还大的数,则更新max
if(a[j] > a[max]) {
max = j;
}
}
// 将找到的最大值交换到当前未排序部分的末尾
swap(a[max], a[n - i - 1]);
}
// 输出排序后的数组
for(int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0; // 程序结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=201
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=201
文章版权归作者所有,未经允许请勿转载。
THE END