binsearch.c |
| #include <stdio.h> #include <stdlib.h> int binsearch(int *a, int n, int x){ int m=n/2; if(n==0) return 0; if(a[m]==x) return 1; else if(a[m]<x) return binsearch(a,m,x); else return binsearch(a+m+1,n-m-1,x); } void insertion_sort(int *a, int n){ int guide=0; int i; int value; int j; for (i=0; i<n; i++){ value = a[i]; if(a[i]<guide){ for(j=i-1; j >=0 && a[j] > value; j--){ a[j+1]=a[j]; } a[j+1]=value; } if (value>guide) guide=value; // printf("Value: %d\n",value); // printf("Guide: %d\n",guide); } } int rand(){ static int rand_seed=10; rand_seed = rand_seed *1103515245+12345; return (unsigned int)(rand_seed / 65536) % 10; } main(){ int length=10; int a[length]; int x=5; int i; int m; for(i=0; i<length; i++){ a[i]=rand(); } for(i=0; i<length; i++){ printf("%d\n",a[i]); } insertion_sort(a, length); if(binsearch(a, length,x)){ printf("Found value: %d\n", x); } else printf("could not find value: %d\n", x); return 0; } |
James Little |