Accedi

Selection sort

PROBLEMA

Scrivere un programma che letti da tastiera due array monodimensionali di interi di lunghezza fornita dall’utente:

  1. stampa a video I due array inseriti dall’utente;
  2. ordina I due array utilizzando l’algoritmo di ordinamento “selection sort”;
  3. unisce I due array in un nuovo array;
  4. stampa a video l’array di cui sopra;
  5. ordina l’array utilizzando l’algoritmo di ordinamento “selection sort”;
  6. stampa a video l’array ordinato.

CODICE SORGENTE

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
 int dimensione_a;
 int dimensione_b;
 int dimensione_c;
 int i, j;
 int temp;
 printf("Insesci dimensione vettore a: ");
 scanf("%i", &dimensione_a);
 int a[dimensione_a];
 for(i=0;i<dimensione_a;i++){
  printf("Inserire elemento numero %i del vettore 'a': ", i+1);
  scanf("%i", &a[i]);
 }
 printf("\n\n\n\n");
 printf("Insesci dimensione vettore b:");
 scanf("%i", &dimensione_b);
 int b[dimensione_b];
 for(i=0;i<dimensione_b;i++){
  printf("Inserire elemento numero %i del vettore 'b': ", i+1);
  scanf("%i", &b[i]);
 }
 printf("\n\n\n\n");
 //stamapa punto 1 vettore a
 for(i=0;i<dimensione_a;i++){
  printf("Elemento numero %i: %i\n", i+1, a[i]);
 }
 printf("\n\n\n\n");
 //stampa punto 1 vettore b
 for(i=0;i<dimensione_b;i++){
  printf("Elemento numero %i: %i\n", i+1, b[i]);
 }
 printf("\n\n\n\n");
 //punto 2 vettore a
 for (i=0; i<dimensione_a-1; i++){
  for (j=i+1; j<dimensione_a; j++){
   if (a[j]<a[i]){
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
   }
  }
 }
 //punto 2 vettore b
 for (i=0; i<dimensione_b-1; i++){
  for (j=i+1; j<dimensione_b; j++){
   if (b[j]<b[i]){
    temp=b[i];
    b[i]=b[j];
    b[j]=temp;
   }
  }
 }
 //punto 3
 dimensione_c=dimensione_a+dimensione_b;
 int c[dimensione_c];
 for(i=0;i<dimensione_a;i++){
  c[i]=a[i];
 }
 for(i=0;i<dimensione_b;i++){
  c[i+dimensione_a]=b[i];
 }
 //punto 4
 for(i=0;i<dimensione_c;i++){
  printf("Elemento numero %i: %i\n", i+1, c[i]);
 }
 printf("\n\n\n\n");
 //punto 5
 for (i=0; i<dimensione_c-1; i++){
  for (j=i+1; j<dimensione_c; j++){
   if (c[j]<c[i]){
    temp=c[i];
    c[i]=c[j];
    c[j]=temp;
   }
  }
 }
 //punto 6
 for(i=0;i<dimensione_c;i++){
  printf("Elemento numero %i: %i\n", i+1, c[i]);
 }
 printf("\n\n\n\n");
 system("PAUSE");
 return 0;
}