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; }
void VecQuickSort2(IntVectorPtr vector, int start, int end) { int l=start, r=end, tmp, piv=vector->data[(start+end)/2]; while(l<=r) { while(vector->data[l] < piv) l++; while(vector->data[r] > piv) r--; if(l<=r) { tmp = vector->data[l]; vector->data[l]=vector->data[r]; vector->data[r]=tmp; l++; r--; } } if(start < r) VecQuickSort2(vector,start,r); if(l < end) VecQuickSort2(vector,l,end); } /* end VecQuickSort */