Dưới đây là chương trình Java cho Insertion Sort đệ quy:
Ví dụ
import java.util.Arrays;
public class Demo{
static void recursive_ins_sort(int my_arr[], int arr_len){
if (arr_len <= 1)
return;
recursive_ins_sort(my_arr, arr_len - 1);
int last = my_arr[arr_len - 1];
int j = arr_len - 2;
while (j >= 0 && my_arr[j] > last){
my_arr[j + 1] = my_arr[j];
j--;
}
my_arr[j + 1] = last;
}
public static void main(String[] args){
int my_arr[] = {11, 23, 67, 83, 42, 11, 0};
recursive_ins_sort(my_arr, my_arr.length);
System.out.println("Các phần tử mảng sau khi thực hiện insertion sort: ");
System.out.println(Arrays.toString(my_arr));
}
}
Kết quả
Các phần tử mảng sau khi thực hiện insertion sort là [0, 11, 11, 23, 42, 67, 83]
Lớp Demo chứa hàm đệ quy tĩnh cho insertion sort. Hàm này nhận mảng và độ dài làm tham số. Ở đây, một số điều kiện được kiểm tra. Nếu độ dài mảng nhỏ hơn 1, nó được trả về nguyên trạng. Ngược lại, các phần tử mảng được sắp xếp bằng cách giảm kích thước mảng liên tục.
Phần tử cuối cùng của mảng sẽ được đặt ở đúng vị trí và một biến khác dùng làm chỉ số để kiểm tra nếu phần tử cuối cùng trong mảng bằng phần tử tại chỉ số cụ thể. Cách này, các phần tử được đặt ở đúng vị trí. Nếu gặp phần tử lớn hơn key, nó được tăng sang vị trí tiếp theo. Kết quả liên quan được hiển thị trên console.