diff --git a/Ch 1.Arrays And Strings/10.Ouicksort.cpp b/Ch 1.Arrays And Strings/10.Ouicksort.cpp index 6e16e08..b5a064f 100644 --- a/Ch 1.Arrays And Strings/10.Ouicksort.cpp +++ b/Ch 1.Arrays And Strings/10.Ouicksort.cpp @@ -1,66 +1,58 @@ #include -using namespace std; -int partition(int *arr,int low,int high); +int partition(int *arr, int low, int high) { + int pivot = arr[low]; + int i = low, j = high + 1; -void quick(int *arr,int low,int high){ -if(high>low){ -int cnst=partition(arr,low,high); -quick(arr,low,cnst-1); -quick(arr,cnst+1,high); -} -} - -int partition(int *arr,int low,int high){ -int pivot=arr[low]; -int i=low,j=high+1; + while (i < j) { + do { + ++i; + } + while (arr[i] <= pivot); -while(i pivot); -do{ -j--; -} -while(arr[j]>pivot); + if (i < j) { + int tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + } -if(i low) { + int cnst = partition(arr, low, high); + quicksort(arr, low, cnst - 1); + quicksort(arr, cnst + 1, high); + } } -int main(){ - -int n; -cout<<"Enter array size "<>n; +int main() { + int n; + std::cout << "enter array size : "; + std::cin >> n; -int arr[n]; -cout<<"Enter array elements "<>arr[i]; + for(int i = 0; i < n; ++i) { + std::cin >> arr[i]; + } -quick(arr,0,n-1); -for(int i=0;i