オバマ氏との信頼プログラミングを見つけるための水問題、質問C:クイックソートqsort [2 *]

毎日の質問(93)

オバマとのプログラミング

タイトル説明

米国のバラク・オバマ大統領は、プログラミングを学ぶようにすべての人に呼びかけただけでなく、コードを書くための模範を示し、アメリカ史上初のコンピューターコードを書いた大統領になりました。2014年の終わりに、「コンピューターサイエンス教育ウィーク」の正式な開始を祝うために、オバマ氏は非常に単純なコンピューターコードを作成しました。画面に正方形を描きます。今、あなたも彼と一緒にペイントすることができます!

入力フォーマット

入力は、正方形の辺の長さN(3≤N≤20)と、スペースで区切られた1行で正方形の辺を形成するいくつかの文字Cを示します。

出力フォーマット

指定された文字Cによって描かれた正方形を出力します。ただし、行の間隔は列の間隔よりも大きいため、結果をより正方形に見せるために、出力する行の数は実際には列の数の50%(切り上げ)であることに注意してください。

入力サンプル

10 a

サンプル出力

aaaaaaaaaa
a        a
a        a
a        a
aaaaaaaaaa

C ++コード:

#include<iostream>
using namespace std;

int main()
{
    
    
	float n;
	char c;
	cin >> n >> c;
	int row;
	row = (int)((n / 2.0) + 0.5);
	for(int i = 0; i < row; i++)
	{
    
    
		for(int j = 0; j < n; j++)
		{
    
    
			if(i > 0 && i < row - 1 && j > 0 && j < n - 1 )
			{
    
    
				cout << ' ';
			}
			else
			{
    
    
				cout << c;
			}	
		}
		cout << '\n';
	}
	return 0;
} 

サンプル操作の結果は次のとおりです。
ここに画像の説明を挿入
私は人気があります、ハハハハハ
ここに画像の説明を挿入
方法2:パリティ方法

#include<cstdio>

int main()
{
    
    
	int row, col;
	char c;
	scanf("%d %c", &col, &c);
	if(col % 2 == 1)
		row = col / 2 + 1;
	else
		row = col / 2;
		
	for(int i = 0; i < col; i++)
	{
    
    
		printf("%c", c);
	}
	printf("\n");
	for(int i = 2; i < row; i++)
	{
    
    
		printf("%c", c);
		for(int j = 0; j < col - 2; j++)
		{
    
    
			printf(" ");
		}
		printf("%c\n", c);
	}
	for(int i = 0; i < col; i++)
	{
    
    
		printf("%c", c);
	}
	return 0;
}

質問C:クイックソートqsort [2 *]

タイトル説明

n個の整数を入力し、クイックソートメソッドを使用してソートします

入る

最初の行の数字nは、
次のn行にn個の整数があることを意味し、各行には整数があります

出力

出力ソートの結果は昇順で、
行ごと1つのデータが表示されます

入力サンプル

5
12
18
14
13
16 

サンプル出力

12
13
14
16
18 

C ++コード(最初のバージョン):

#pragma warning(disable:4996);
#include<bits/stdc++.h>
using namespace std;
int a[100005];

int Partition(int a[], int left, int right)
{
    
    
	int temp = a[left];
	while (left < right) {
    
    
		while (left<right && a[right]>temp) right--;
		a[left] = a[right];
		while (left<right && a[left]<=temp) left++;
		a[right] = a[left];
	}
	a[left] = temp;
	return left;
}

void QuickSort(int a[], int left, int right)
{
    
    
	if(left < right)
	{
    
    
		int pos = Partition(a, left, right);
		QuickSort(a, left, pos - 1);
		QuickSort(a, pos + 1, right);
	}	
}

int main()
{
    
    
	int n;
	while(cin >> n)
	{
    
    
		for(int i = 1; i <= n; i++)
		{
    
    
			cin >> a[i];
		}
		QuickSort(a, 1, n);
		
		for(int i = 1; i <= n; i++)
		{
    
    
			cout << a[i] << endl;
		}
	}	
	return 0;
} 

C ++コード(2番目のバージョン):

#include<bits/stdc++.h>
using namespace std;
int a[100005];

int Partition(int a[], int left, int right)
{
    
    
	int p = (round(1.0 * rand() / RAND_MAX * (right - left) + left));
	int t = a[p];
	a[p] = a[left];
	a[left] = t;
	int temp = a[left];
	while(left < right)
	{
    
    
		while(left < right && a[right] > temp)
		{
    
    
			right--;
		}
		a[left] = a[right];
		while(left < right && a[left] < temp)
		{
    
    
			left++;
		}
		a[right] = a[left];
	}
	a[left] = temp;
	return left;
}

void QuickSort(int a[], int left, int right)
{
    
    
	if(left < right)
	{
    
    
		int pos = Partition(a, left, right);
		QuickSort(a, left, pos - 1);
		QuickSort(a, pos + 1, right);
	}	
}

int main()
{
    
    
	int n;
	while(cin >> n)
	{
    
    
		for(int i = 1; i <= n; i++)
		{
    
    
			cin >> a[i];
		}
		QuickSort(a, 1, n);
		
		for(int i = 1; i <= n; i++)
		{
    
    
			cout << a[i] << endl;
		}
	}	
	return 0;
} 

Cコード:

#pragma warning(disable:4996);
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<time.h>
#include<stdlib.h>
using namespace std;
int a[100005];
int partition(int a[], int left, int right) {
    
    
	int temp = a[left];
	while (left < right) {
    
    
		while (left<right && a[right]>temp) right--;
		a[left] = a[right];
		while (left<right && a[left]<=temp) left++;
		a[right] = a[left];
	}
	a[left] = temp;
	return left;
}
void quicksort(int a[], int left, int right) {
    
    
	if (left < right) {
    
    
		int pos = partition(a, left, right);
		quicksort(a, left, pos - 1);
		quicksort(a, pos + 1, right);
	}
}
int main() {
    
    
	int n;
	while (scanf("%d", &n) != EOF) {
    
    
		for (int i = 0;i < n;i++)
		{
    
    
			scanf("%d", &a[i]);
		}
		quicksort(a, 0, n - 1);
		for (int i = 0;i < n;i++) {
    
    
			printf("%d\n", a[i]);
		}
	}
	return 0;
}

私の記事が気に入ったら、コレクションのように3回続けて覚えておいてください。すべてのように、すべての注目を集めてください。すべてのコレクションは、今後の私の無限のモチベーションになります。↖(▔▽▔)↗ご支援ありがとうございます。次号はもっとワクワクします!

おすすめ

転載: blog.csdn.net/qq_44631615/article/details/113785618