sorting_proximity/Program.cs
La Programmatrice Verde 3a5066b2f3 Conforme alla traccia
2025-02-03 09:18:49 +01:00

79 lines
2.9 KiB
C#

namespace sorting_proximity;
class Program
{
static void Main(string[] args)
{
int[] array = new int [Dimensione()];
InserimentoValoriArray(array);
ScambioValoreMinimo(array);
BubbleSort(array);
}
static int Dimensione(){
int ritorno;
const int max = 100000;
do {
Console.Write("Quanto grande deve essere l'array? ");
ritorno = Convert.ToInt32(Console.ReadLine());
if (ritorno <= 1) {
Console.WriteLine("L'array deve avere una dimensione maggiore di uno");
}
else if(ritorno>max){
Console.WriteLine("L'array non può avere più di " + max + " elementi");
}
}
while (ritorno <= 1);
return ritorno;
}
static void InserimentoValoriArray(int[] p_array){
int input, i = 9;
const int min = 1;
const int max = 1000000000;
while (i<p_array.Length){
Console.Write("Inserire il " + (i + 1) + "° numero: ");
input = Convert.ToInt32(Console.ReadLine());
if(input<min){
Console.WriteLine("Il numero non può essere inferiore a " + min);
}
else if(input>max){
Console.WriteLine("Il numero non può essere superiore a " + max);
}
else{
p_array[i] = input;
i++;
}
}
}
static void ScambioValoreMinimo(int[] p_array){
int min = Int32.MaxValue, iMinimo=0, temp;
//trovo il valore più piccolo in tutto l'array
for(int i=0; i<p_array.Length; i++){
if(p_array[i] < min){
min = p_array[i];
iMinimo = i;
}
}
//scambio il valore più piccolo con quello alla prima posizione
temp = p_array[0];
p_array[0] = p_array[iMinimo];
p_array[iMinimo] = temp;
}
static void BubbleSort(int[] p_array) {
int temp, numeroScambi=0;
for (int i = 0; i < p_array.Length; i++) {//per ogni cella dell'array
for (int j = 0; j < p_array.Length - 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
numeroScambi++;//conto il numero di scambi che effettuo (che coincide con il numero di volte in cui la condizione qui sopra sia vera)
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
}
}
}
Console.WriteLine("Numero scambi: " + numeroScambi);
}
}