Advertisement
carbos

Ricerca Dicotomica

Sep 7th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. void order_arr(int* , int);
  5. int search(int* , int , int );
  6. void order_arr(int *arr , int len){
  7.     int i, b = 0;
  8.     for(i= 0;b<len;i++){
  9.         if(arr[b] >= arr[i] && b == 0 ){
  10.             int t = arr[b];
  11.             arr[b] = arr[i];
  12.             arr[i] = t;
  13.         } else if(arr[b] <= arr[i] && b != 0){
  14.             int t = arr[b];
  15.             arr[b] = arr[i];
  16.             arr[i] = t;
  17.         }
  18.         if(i == len-1){
  19.             i = 0;
  20.             b++;
  21.         }
  22.     }
  23. }
  24. int search(int *arr , int find , int len){
  25.     int a = len - 1;
  26.     int b = 0 , c = a , d;
  27.     while( find != arr[c]){
  28.         c = a/2 ;
  29.         if(find > arr[c]){
  30.             c =(int) a + (a/2);
  31.             a =(int) c;
  32.         } else if(find < arr[c]){
  33.             c =(int) a - (a/2);
  34.             a = (int) c;
  35.         } else if(c == (len - 1)/a && find != arr[len-1]){
  36.             return -1;
  37.             break;
  38.             }
  39.         }
  40.         return c + 1;
  41.     }
  42.    
  43.  
  44. main(){
  45.     int len ;
  46.     int i = 0;
  47.     printf("Specificare il numero di dati: ");
  48.     scanf("%d" , &len);
  49.     int *arr = (int *) malloc(sizeof(int)* len );
  50.     printf("Inserire i dati\n");
  51.     while(i < len){
  52.         scanf("%d" , &arr[i]);
  53.         i++;   
  54.     }
  55.     order_arr(arr , len);
  56.     printf("Inserire l'intero da cercare: ");
  57.     int find ;
  58.     scanf("%d" , &find );
  59.     int f = search(arr , find , len);
  60.     if(f != 0){
  61.     printf("\n%d" , f);
  62. } else {
  63.     printf("Numero non trovato");
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement