Dưới đây là chương trình Java cho Quick Sort lặp:
Ví dụ
public class Demo{
void swap_vals(int arr[], int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
int partition(int arr[], int l, int h){
int x = arr[h];
int i = (l - 1);
for (int j = l; j <= h - 1; j++){
if (arr[j] <= x){
i++;
swap_vals(arr, i, j);
}
}
swap_vals(arr, i + 1, h);
return (i + 1);
}
void quick_sort(int arr[], int l, int h){
int my_list[] = new int[h - l + 1];
int top = -1;
my_list[++top] = l;
my_list[++top] = h;
while (top >= 0){
h = my_list[top--];
l = my_list[top--];
int p = partition(arr, l, h);
if (p - 1 > l){
my_list[++top] = l;
my_list[++top] = p - 1;
}
if (p + 1 < h){
my_list[++top] = p + 1;
my_list[++top] = h;
}
}
}
public static void main(String args[]){
Demo my_ob = new Demo();
int my_arr[] = { 34, 76, 41, 32, 11, 0 , 91, 102, -11};
my_ob.quick_sort(my_arr, 0, my_arr.length - 1);
int i;
System.out.println("Sau khi quick sort lặp, mảng là: ");
for (i = 0; i < my_arr.length; ++i)
System.out.print(my_arr[i] + " ");
}
}
Kết quả
Sau khi quick sort lặp, mảng là: -11 0 11 32 34 41 76 91 102
Lớp Demo chứa 3 hàm: swap_vals dùng để hoán đổi giá trị bằng biến tạm, partition chia mảng thành hai nửa dựa trên giá trị pivot, và quick_sort dùng giá trị pivot để sắp xếp các giá trị trong mảng.
Trong hàm main, một instance của lớp Demo được tạo cùng với một mảng. Hàm quick_sort được gọi trên mảng này và kết quả được hiển thị trên console.