Java迭代快速排序程式
在本程式中,我們將使用Java對整數陣列進行迭代快速排序。程式使用迭代方法而不是遞迴方法,並使用輔助棧來管理排序過程。輸出將在應用快速排序演算法後顯示排序後的陣列。
問題陳述
編寫一個Java程式,使用迭代快速排序方法對整數陣列進行排序。以下是演示 -
輸入
{34, 76, 41, 32, 11, 0, 91, 102, -11}
輸出
After iteratively performing quick sort, the array is
-11 0 11 32 34 41 76 91 102
迭代快速排序步驟
以下是迭代快速排序的步驟 -
- 定義一個名為Demo的類,其中包含用於交換值、對陣列進行分割槽以及執行迭代快速排序的方法。
- 在quick_sort方法中使用while迴圈來處理來自棧的子陣列索引。
- 使用if語句將子陣列索引推入棧中以進行進一步分割槽。
- 在主方法中,建立Demo的例項,初始化陣列,並呼叫quick_sort方法。
- 列印排序後的陣列。
Java迭代快速排序程式
以下是迭代快速排序的Java程式 -
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("After iteratively performing quick sort, the array is ");
for (i = 0; i < my_arr.length; ++i)
System.out.print(my_arr[i] + " ");
}
}
輸出
After iteratively performing quick sort, the array is -11 0 11 32 34 41 76 91 102
程式碼說明
名為Demo的類包含3個函式,'swap_vals'用於使用臨時變數交換值,'partition'函式根據樞紐值將陣列分成兩半,以及'quick_sort'函式,該函式使用樞紐值並基於此值對陣列中的值進行排序。
在主函式中,建立了Demo類的例項以及一個數組。在該陣列上呼叫'quick_sort'函式,並在控制檯上顯示輸出。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP