Problema del agua para encontrar programación de confianza con Obama, pregunta C: qsort de clasificación rápida [2 *]

Preguntas diarias (noventa y tres)

Programando con Obama

Descripción del Título

El presidente de los Estados Unidos, Barack Obama, no solo pidió a todos que aprendan a programar, sino que incluso dio un ejemplo para escribir código, convirtiéndose en el primer presidente en la historia de Estados Unidos en escribir código de computadora. A fines de 2014, para celebrar el lanzamiento oficial de la "Semana de la Educación en Ciencias de la Computación", Obama escribió un código de computadora muy simple: dibuje un cuadrado en la pantalla. ¡Ahora también puedes pintar con él!

Formato de entrada

La entrada da la longitud del lado N del cuadrado (3≤N≤20) y algunos caracteres C que forman los lados del cuadrado en una línea, separados por un espacio.

Formato de salida

Imprima el cuadrado dibujado por el carácter C dado. Pero observe que el espaciado entre filas es mayor que el espaciado entre columnas, por lo que para que el resultado parezca más cuadrado, el número de filas que generamos es en realidad el 50% del número de columnas (redondeado hacia arriba).

Muestra de entrada

10 a

Salida de muestra

aaaaaaaaaa
a        a
a        a
a        a
aaaaaaaaaa

Código 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;
} 

Los resultados de la operación de muestra son los siguientes:
Inserte la descripción de la imagen aquí
Me gusta ser popular, jajajajaja
Inserte la descripción de la imagen aquí
Método 2: Método de paridad

#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;
}

Pregunta C: Qsort de clasificación rápida [2 *]

Descripción del Título

Ingrese n números enteros y use el método de clasificación rápida para ordenar

ingresar

El número n en la primera línea significa que hay n números enteros en las
siguientes n líneas, cada línea tiene un número entero

Producción

Resultados de clasificación de salida en orden ascendente,
un dato por fila

Muestra de entrada

5
12
18
14
13
16 

Salida de muestra

12
13
14
16
18 

Código C ++ (primera versión):

#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ódigo C ++ (segunda versión):

#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ódigo 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;
}

Si te gusta mi artículo, por favor recuerda tres veces consecutivas, dale me gusta y sigue la colección, cada me gusta y cada una de tu atención y cada colección será mi motivación infinita en el camino a seguir! ! ! ↖ (▔ ▽ ▔) ↗ ¡Gracias por su apoyo, el próximo número será más emocionante! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_44631615/article/details/113785618
Recomendado
Clasificación