Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Si consideri un array A, non vuoto, di n interi, in cui ciascun valore può essere esclusivamente 0 oppure 1. I
- valori sono presenti senza alcun ordine; è anche possibile che tutti i valori siano uguali.
- Si scriva un algoritmo lineare che sposti tutti i valori 0 prima di tutti i valori 1. Verrà assegnato punteggio pieno
- ad algoritmi che scambiano elementi in A, che richiedono memoria ulteriore O(1) (quindi che non sfruttano array
- ausiliari), e che non sono basati sul conteggio del numero di 0 e 1 presenti.
- Si scriva un programma che implementa l’algoritmo. Il programma deve leggere da standard input un intero n
- seguito da una sequenza di n valori 0/1, riordinare l’array e stamparlo. Ad esempio, ricevendo da standard input
- 7
- 0 1 1 0 0 0 1
- il programma deve stampare
- 0 0 0 0 1 1 1
- */
- #include <stdio.h>
- int main(void){
- int b[100]={0},n,x,i=0;
- scanf("%d",&n);
- printf("\nn = %d\n",n);
- //input
- do{
- scanf("%d",&x);
- if(x==0 || x==1){
- b[i]=x;
- printf("\n\n%d",b[i]);
- //ordinamento
- do{
- x=b[i];
- b[i]=b[i-1];
- b[i-1]=x;
- if(b[i-2]!=0 && i>1){
- i--;
- }else{
- break;
- }
- }while(b[i]==0 && b[i-1]!=0 && i!=0);
- /* if (b[i]==0 && b[i-1]!=0 && i!=0){
- b[i]=b[i-1];
- b[i-1]=x;
- i=i-2;
- }*/
- i++;
- }
- printf("\ni = %d\n",i);
- }while(i<n);
- //output
- printf("\nn = %d\n",n);
- for(i=0;i<n;i++){
- printf("%d",b[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement