Visualizzazione dei risultati da 1 a 6 su 6

Discussione: bucket-sort aiutoooo

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    3

    bucket-sort aiutoooo

    ciao a tutti vi volevo kiedere un favore....
    come posso implementere un programma in c usando i vettori che:
    legge da input una successione di 20 interi diversi di valore compreso tra min=-84 e max=531 e poi usare l'algoritmo di simple-bucke-sort per ordinare gli elementi letti
    aiutatemi vi prego
    ahhh considerare il caso di un valore messo da input ripetuto
    ciao vi prego aiutoooo

  2. #2
    codice:
    #include <stdio.h>
    
    void main(){
        int vectINPUT[20],vectCONTROL[20],i,j,z,temp;
        printf("Inserisci 20 numeri interi compresi tra \"-84 e 531\"\n\n");
        //inserisco 20 numeri "interi"
    	for(i=0,z=1;i<20;i++,z++){
    	DUPLICATO:
    	    //input utente
    		printf("Inserisci il numero [%d di 20] : ",z);
            scanf("%d",&vectINPUT[i]);
            vectCONTROL[i]=vectINPUT[i];
    		//controlla se si sta inserendo un duplicato
    		for(j=0;j<i;j++){
    			if(vectCONTROL[j]==vectINPUT[i]){
    				printf("Numero già inserito!!!\n");
    				goto DUPLICATO;
    			}
    		}
    	}
    	//ordina i 20 numeri in modo crescente (bubble-sort)
        for(i=0;i<20;i++){
    		for(j=0;j<20;j++){
    			if(vectINPUT[i]<vectINPUT[j]){
    			    temp=vectINPUT[j];
    				vectINPUT[j]=vectINPUT[i];
    				vectINPUT[i]=temp;
    			}        
    		}
    	}
        //stampa a video il vettore ordinato in modo crescente 
    	for(i=0,j=1;i<20;i++,j++){
            printf("\nValore [%d di 20] = %d",j,vectINPUT[i]); 
    	}
    	printf("\n");
    }

  3. #3
    :quote: la formattazine faceva schi**

    codice:
    #include <stdio.h>
    
    void main(){
        int vectINPUT[20],vectCONTROL[20],i,j,z,temp;
        printf("Inserisci 20 numeri interi compresi tra \"-84 e 531\"\n\n");
        //inserisco 20 numeri "interi"
        for(i=0,z=1;i<20;i++,z++){
        DUPLICATO:
            //input utente
            printf("Inserisci il numero [%d di 20] : ",z);
            scanf("%d",&vectINPUT[i]);
            vectCONTROL[i]=vectINPUT[i];
    	//controlla se si sta inserendo un duplicato
    	for(j=0;j<i;j++){
    	    if(vectCONTROL[j]==vectINPUT[i]){
    	        printf("Numero già inserito!!!\n");
    		goto DUPLICATO;
    	    }
    	}
        }
        //ordina i 20 numeri in modo crescente (bubble-sort)
        for(i=0;i<20;i++){
            for(j=0;j<20;j++){
    	    if(vectINPUT[i]<vectINPUT[j]){
    	        temp=vectINPUT[j];
    	        vectINPUT[j]=vectINPUT[i];
    	        vectINPUT[i]=temp;
    	    }        
            }
        }
        //stampa a video il vettore ordinato in modo crescente 
        for(i=0,j=1;i<20;i++,j++){
            printf("\nValore [%d di 20] = %d",j,vectINPUT[i]); 
        }
        printf("\n");
    }
    Così si legge meglio

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    3
    ciao sei stato gentile ma devo usare a forza la bucket-sort e nn la buble o la quick o etc ma escusivamente quella.

    cioe' questo algoritmo deve fare :

    Nel caso in cui si sappia quali sono il massimo ed il minimo valore che possono essere presenti nel vettore è possibile usare una versione molto semplificata dell'algoritmo bucket-sort, che chiameremo simple-bucket-sort.

    Supponiamo di avere un vettore che si chiama unsorted che contiene numeri interi diversi.
    Supponiamo inoltre che gli elementi di unsorted siano tutti compresi tra i due valori min e max, inclusi.
    Definiamo un vettore v che ha tanti elementi quanti quelli che intercorrono tra min e max compresi. Questo vettore serve ad indicare che il valore corrispondente è presente nel vettore da ordinare unsorted. Daremo valore 1 ad un elemento di v se in unsorted è presente il numero corrispondente.
    Esaminiamo tutti gli elementi di unsorted e settiamo a 1 i corrispondenti elementi di v.
    Per elencare i numeri di unsorted in ordine crescente basta scandire tutti gli elementi di v e stampare l'elemento corrispondente quando ci si trova un 1.

    e bisogna anke realizzare il programma precedente in modo che tra i numeri in input possano esserci anche delle ripetizioni

    un esempio potrebbe essere :
    Input
    56
    31
    49
    17
    -6
    -18
    0
    90
    531
    -40
    121
    3
    55
    91
    300
    12
    -23
    -1
    -34
    -84

    Output
    -84
    -40
    -34
    -23
    -18
    -6
    -1
    0
    3
    12
    17
    31
    49
    55
    56
    90
    91
    121
    300
    531

    e bisogna anke realizzare il programma precedente in modo che tra i numeri in input possano esserci anche delle ripetizioni

    forse adesso sono stato + chiaro ciao e un grazie infinito a ki mi riesce ad aiutare

  5. #5
    non conosco il bucket-sort

    ma il mio programmino fa esattamente quello che hai chiesto nel 3d

    ti fa inserire 20 numeri interi (anche negativi)

    (se inserisci un duplicato ti avverte che è un duplicato e ti
    chiede di inserire un altro numero) volendo puoi togliere
    questa parte...

    dopo di che ordina i numeri presenti nel vettore
    in modo crescente -51 a 531

    poi li visualizza a video.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    3
    si ho capito ma purtroppo nn posso utilizzare la bubble ma solamente
    la bucket ke funziona in quel modo ora c provo io poi ti faccio sapere ciao grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.