int VecBinarySearch3(IntVectorPtr vector, int element, int start, int end) { int mid; if(end<start) return -1; mid = (end+start)/2; if(element < vector->data[mid]) return VecBinarySearch2(vector, element, start, mid-1); else if(element > vector->data[mid]) return VecBinarySearch2(vector, element, mid+1, end); else return mid; } /* end VecBinarySearch3 */
int main(int argc, char** argv) { int i; int sz = atoi(argv[1]); int element = atoi(argv[2]); srand( (unsigned)time( NULL )); IntVectorPtr vector = VecNew(initialCapacity); for(i=0;i<sz+1;i++) vector = VecAdd(vector,rand()%100); printlist(vector, sz); if (argc == 3) { VecQuickSort(vector); printf("\nThe position of the number %d is %d\n", element, VecBinarySearch(vector, element)); } else if ( strcmp(argv[3], "-l") == 0 ) { VecQuickSort2(vector, 1, sz-1); printf("\nThe position of the number %d is %d\n", element, VecBinarySearch2(vector->data, 0, sz, element)); } printlist(vector, sz); VecDelete(vector); return 0; }