题目描述
给定一个长度为 N(不大于 500)的正整数序列,请将其中的所有奇数取出,并按升序输出。
输入
第 1 行为 N;
第 2 行为 N 个正整数,其间用空格间隔。
输出
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
样例输入输出
样例输入 #1
10 1 3 2 6 5 4 9 8 7 10
样例输出 #1
1,3,5,7,9
分析
奇数导入数组,可用冒泡、选择、插入排序,自行选择,我这里给一种方法(我才不会告诉你我懒得写)
就是水题啊
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[555],on=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++)
{
if(a[i]%2==1)
{
if(on==1)
{
cout<<",";
}
cout<<a[i];
on=1;
}
}
return 0;
}
拓展(或者说复习)
选择排序:
选择排序是一种简单的排序算法,很好理解,就是从未排序的数组中选择最小(或最大)的元素,并将其放置在已排序数组的末尾。选择排序的优化思路可以有多种,例如可以对已排序部分进行缓存,减少不必要的交换次数,或者可以使用其他排序算法对数组进行预处理等。在日常敲代码中,使用的不多。
冒泡排序:
冒泡排序也是一种简单的排序算法,就是从每一轮循环结束后最大(或最小)的元素浮到数组的一端。
具体步骤:
-
从数组的第一个元素开始,比较相邻的两个元素,如果顺序不正确则交换它们的位置,将较大(或较小)的元素往后移动。
-
继续对数组中的下一对相邻元素进行比较和交换,直到最后一个元素。
-
重复以上步骤,每一轮循环结束后,最大(或最小)的元素会浮到数组的末尾。
-
重复进行上述步骤,直到所有元素都排好序。
虽然冒泡排序简单易懂,但由于其效率较低,对于大规模数据排序时不太实用。
插入排序:
在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入,直到整个序列有序。
但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。
(此处转载于 双鱼211 的原创文章
原文链接:https://blog.csdn.net/weixin_50886514/article/details/119045154)
其余转载于C知道(?)
不喜勿喷,初心是想让你们在看题时学到东西,不用再翻。因为我个人力量和时间有限,所以要吸纳别人的精华,再完善文章。
如有侵权,请联系我,我会删除相应内容。