import java.util.*;
class Node{
int data;
boolean status;
public Node(){
status = false;
}
}
public class QuickSort {
static int bintang;
public static void main(String[] args){
Scanner input = new Scanner (System.in);
Node[] angka;
System.out.println(“Masukkan bilangan (dipisah spasi) :”);
String bil = input.nextLine();
String[] in = bil.split(” “);
angka = new Node[in.length];
for(int i=0;i<in.length;i++){
angka[i] = new Node();
angka[i].data = Integer.parseInt(in[i]);
}
quickSort(angka);
System.out.println(“Hasil sorting :”);
cetak(angka);
}
static void cetak(Node[] angka){
for(int i=0;i<angka.length;i++){
if(i==bintang)
System.out.print(“* “);
else System.out.print(angka[i].data+” “);
}
System.out.println();
}
static void quickSort (Node[] angka){
int pivot,pivotIndex,pointer;
if(angka.length>=1){
pivotIndex = 0;
pointer = angka.length;
boolean kanan = true;
while(pivotIndex<angka.length-1){
pivot = angka[pivotIndex].data;
pointer–;
while(pointer!=pivotIndex){
if(kanan){
if(angka[pointer].data<pivot){
angka[pivotIndex].data = angka[pointer].data;
int temp = pivotIndex;
pivotIndex = pointer;
pointer = temp+1;
kanan = false;
}
else pointer–;
}
else{
if(angka[pointer].data>pivot){
angka[pivotIndex].data = angka[pointer].data;
int temp = pivotIndex;
pivotIndex = pointer;
pointer = temp-1;
kanan = true;
}
else pointer++;
}
bintang = pivotIndex;
System.out.println(“Pivot = “+pivot);
cetak(angka);
System.out.println();
}
angka[pivotIndex].data = pivot;
angka[pivotIndex].status = true;
bintang = angka.length;
cetak(angka);
System.out.println();
pivotIndex = 0;
while(pivotIndex<angka.length && angka[pivotIndex].status)
pivotIndex++;
pointer = pivotIndex + 1;
while(pointer<angka.length && !angka[pointer].status)
pointer++;
kanan = true;
}
}
}
}