how to quicksort a string array in java
package com.javacodegeeks.sorting.quicksort;
public class QuicksortStringExample {
private static String []a;
public static void main(String[] args) {
// Get an String array
a = new String[]{"X","E","C","A"};
// prints the given array
printArray();
// sort the array
sort();
System.out.println("");
//prints the sorted array
printArray();
}
// This method sort an array internally and internally calls quickSort
public static void sort(){
int left = 0;
int right = a.length-1;
quickSort(left, right);
}
// This method is used to sort the array using quicksort algorithm.
// It takes left and the right end of the array as two cursors
private static void quickSort(int left,int right){
// If both cursor scanned the complete array quicksort exits
if(left >= right)
return;
// Pivot using median of 3 approach
String pivot = getMedian(left, right);
int partition = partition(left, right, pivot);
// Recursively, calls the quicksort with the different left and right parameters of the sub-array
quickSort(0, partition-1);
quickSort(partition+1, right);
}
// This method is used to partition the given array and returns the integer which points to the sorted pivot index
private static int partition(int left,int right,String pivot){
int leftCursor = left-1;
int rightCursor = right;
while(leftCursor < rightCursor){
while(((Comparable<String>)a[++leftCursor]).compareTo(pivot) < 0);
while(rightCursor > 0 && ((Comparable<String>)a[--rightCursor]).compareTo(pivot) > 0);
if(leftCursor >= rightCursor){
break;
}else{
swap(leftCursor, rightCursor);
}
}
swap(leftCursor, right);
return leftCursor;
}
public static String getMedian(int left,int right){
int center = (left+right)/2;
if(((Comparable<String>)a[left]).compareTo(a[center]) > 0)
swap(left,center);
if(((Comparable<String>)a[left]).compareTo(a[right]) > 0)
swap(left, right);
if(((Comparable<String>)a[center]).compareTo(a[right]) > 0)
swap(center, right);
swap(center, right);
return a[right];
}
// This method is used to swap the values between the two given index
public static void swap(int left,int right){
String temp = a[left];
a[left] = a[right];
a[right] = temp;
}
public static void printArray(){
for(String i : a){
System.out.print(i+" ");
}
}
}
Are there any code examples left?
New code examples in category Java
-
Java 2022-03-27 21:35:04 Sort string array in case insensitive order and case sensitive order java
-
Java 2022-03-27 21:25:10 java -jar -l resources\es.porperties -i ejemplo.txt -o inject.bin
-
Java 2022-03-27 21:20:21 Debug & Fix a 2-Dimensional Array Java Console Application
-
Java 2022-03-27 20:40:19 TreeSet headSet(E toElement) method in java
-
Java 2022-03-27 19:30:06 close keyboard android
-
Java 2022-03-27 19:20:40 java measure execution time
-
Java 2022-03-27 19:10:06 how to add cardview support in android studio
-
Java 2022-03-27 18:55:08 android studio lower case letters on a button