計蒜客 - T1151 - 奇數單增序列

Will-.發表於2020-12-29

計蒜客 - T1151 - 奇數單增序列


題目

蒜頭君給了一個長度為N(不大於500)的正整數序列(正整數的值不超過N),請將其中的所有奇數取出,並按升序輸出。

輸入格式

共 2 行:第 1 行為N;第2行為N個正整數,其間用空格間隔。

輸出格式

增序輸出的奇數序列,資料之間以逗號間隔。資料保證至少有一個奇數。

Sample Input

10
1 3 2 6 5 4 9 8 7 10

Sample Output

1,3,5,7,9

題意

將數列中的奇數取出,遞增排序
排序可以採用氣泡排序,也可以使用快速排序

思路

水題,基本陣列操作

坑點

程式碼

冒泡

#include<bits/stdc++.h>
using namespace std;
int num[505];
int ans[505];
int main()
{
	int n,cnt=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		if(num[i]%2!=0)
		{
			ans[cnt]=num[i];
			//printf("%d, ",ans[cnt]);
			cnt++;
		}
	}
	for(int i=0;i<cnt;i++)
	{
		int temp;
		for(int j=i;j<cnt;j++)
		{
			if(ans[i]>ans[j])
			{
				temp=ans[j];
				ans[j]=ans[i];
				ans[i]=temp;
			}
		}
	}
	for(int j=0;j<cnt;j++)
		{
			printf("%d",ans[j]);
			if(j!=cnt-1)
			{
				printf(",");
			}
		}
	return 0;
 } 

快排

#include<bits/stdc++.h>
using namespace std;
int num[505];
int ans[505];
int main()
{
	int n,cnt=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		if(num[i]%2!=0)
		{
			ans[cnt]=num[i];
			//printf("%d, ",ans[cnt]);
			cnt++;
		}
	}
	sort(ans,ans+cnt);
	for(int j=0;j<cnt;j++)
		{
			printf("%d",ans[j]);
			if(j!=cnt-1)
			{
				printf(",");
			}
		}
	return 0;
 } 

相關文章