This is a divide and conquer approach. Take a pivot as the last element of array, and place all numbers lesser than this to the left. This is done using partitioning as seen in the code.
Complexity:
Best - O(n logn); Average - O(n logn); Worst - O(n^2)
package org.algorithms.sorting; import java.util.Arrays; public class QuickSortDemo { public static void main(String...args){ int[] arr = {4,5,3,2,1,7}; System.out.println("initial array:"+ Arrays.toString(arr)); quickSort(arr, 0, arr.length-1); System.out.println("\nfinal array:"+Arrays.toString(arr)); } /** * Applies the quicksort * @param arr The array to be sorted * @param start Starting index for sorting * @param end End index for sorting */ private static void quickSort(int[] arr, int start, int end) { if(start < end) { int pIndex = partition(arr,start, end); quickSort(arr, start, pIndex-1); quickSort(arr, pIndex+1, end); } } /** * Push all elements lesser than or equal pivot to left * of partition index, and finally, replace pivot with * element at partition index, so that we have the sub-array * from partition index towards left sorted in ascending fashion. * @param start index * @param end index * @return partition index */ private static int partition(int[] arr, int start, int end) { int pivot = arr[end]; //pivot, last element here int pIndex = start; //partition index for(int i = start; i<= (end-1); i++) if(arr[i] < pivot) { swap(arr, i,pIndex); pIndex++; } //now that all elements left to pIndex are lesser // than pivot (which is at end until now), //swap the pIndex element and pivot, so that // the pivot is in correct place now swap(arr, pIndex, end); return pIndex; } /** * Swaps the elements in the 'arr' array on specified indices * @param index1 * @param index2 */ private static void swap(int[] arr, int index1, int index2) { int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } }
Watch the channel "Fishing Live" (YouTube, LLC) - Videosl
ReplyDelete"Fishing Live" is a video slot by the gambling industry which has gone all the way youtube mp3 to the top of the