bubblesort/Program.cs
2025-01-22 10:00:26 +01:00

69 lines
2.3 KiB
C#

using System.Globalization;
namespace bubblesort;
class Program {
static void Main(string[] args) {
//Richiesta dimensione array
int dimensione = Input();
//creazione array con valori casuali
int[] array = CreaArrayCasuale(dimensione);
//Mostra array in disordine
Console.WriteLine("Array originale:");
StampaArray(array);
Console.WriteLine();
Console.WriteLine();
//riordina array
BubbleSort(array, dimensione);
//mostra array ordinato
StampaArray(array);
}
static int Input() {
int input;
do {
Console.Write("Quanto grande deve essere l'array? ");
input = Convert.ToInt32(Console.ReadLine());
if (input <= 1) {
Console.WriteLine("L'array deve avere una dimensione maggiore di uno");
}
}
while (input <= 1);
return input;
}
static int[] CreaArrayCasuale(int p_dimensione) {
//dichiarazione e inizializzazione variabili
Random caso = new Random();
int[] ritorno = new int[p_dimensione];
for (int i = 0; i < p_dimensione; i++) {
ritorno[i] = caso.Next(-10000, 10001);//per ogni posizione di ritorno assegno un valore a caso (metodo Random.Next)
}
return ritorno;
}
static void BubbleSort(int[] p_array, int p_dimensione) {
int temp;
for (int i = 0; i < p_dimensione; i++) {//per ogni cella dell'array
for (int j = 0; j < p_dimensione - 1 - i; j++) {//per ogni cella dell'array, con il limite massimo che continua a diminuire in proporzione a i
if (p_array[j] > p_array[j + 1]) {//se la cella a sinistra è maggiore di quella a destra
temp = p_array[j]; //memorizzo la cella da cambiare (a sinistra)
p_array[j] = p_array[j + 1]; //sovrascrivo la cella a sinistra con quella a destra (la maggiore)
p_array[j + 1] = temp;//sovrascrivo la cella a destra con il valore originale di quella a sinistra
}
}
}
}
static void StampaArray(int[] p_insieme) {
for (int j = 0; j < p_insieme.Length; j++) {
Console.WriteLine("Elemento " + j + ": " + p_insieme[j]);
}
}
}