Quick Sort:
Here is link for the detailed explanation and algorithm for quicksort: https://rishabhjainiitbhu.blogspot.com/2019/08/sorting-algorithms.html#more
Here is the algorithm for quickSort:
QuickSort(arr, start, end)
- Define pivot as arr[end]
- Get the location of the point of the pivot in resulting array, pivot=partition(arr, start, end)
- quicksort(arr, start, pivot-1)
- quicksort(arr, pivot+1, end)
Here is the code that implements this in c++:
void quicksort(int* arr, int start, int end){ | |
| if(start<end){ | |
| int part = Partition(arr, start, end); | |
| quicksort(arr, start, part-1); | |
| quicksort(arr, part+1, end); | |
| } | |
| } | |
Here is the algorithm for the partition of the array: The detailed explanation for partition function can be found here: https://rishabhjainiitbhu.blogspot.com/2019/08/sorting-algorithms.html#more
Partition(arr, start, end)
- Define pivot = arr[end]
- p_index = start //this is the position we will place pivot the at.
- loop for i=start up to the end
- ..... if arr[i]<pivot
- ..........swap(arr[p_index], arr[i])
- ...........p_index++
- Once the loop is completed swap(arr[p_index], pivot).
Here is the code that implements this:
| int Partition(int* arr, int start, int end){ | |
| int pivot = arr[end]; | |
| int p_index = start; | |
| for(int i=start;i<end;i++){ | |
| if(arr[i]<=pivot){ | |
| swap(&arr[i], &arr[p_index]); | |
| p_index++; | |
| } | |
| } | |
| swap(&arr[end], &arr[p_index]); | |
| return p_index; | |
| } |
No comments:
Post a Comment