Java Core - Sắp xếp chèn trong java
Sắp xếp chèn (Insertion Sort) trong java
Định nghĩa sắp xếp chèn: Xét danh sách con gồm k phần tử đầu a1 … ak. Với k = 1, danh sách gồm một phần tử đã được sắp xếp thành dãy tăng dần. Giả sử trong danh sách k-1 phần tử đầu a1 … ak-1 đã được sắp xếp. Để sắp xếp phần tử ak = x ta tìm vị trí thích hợp của nó trong dãy a1 … ak-1. Vị trí thích hợp cần tìm là vị trí đứng trước phần tử lớn hơn nó và sau phần tử nhỏ hơn hoặc bằng nó.
ví dụ: sử dụng thuật toán Insertion Sort sắp xếp dãy số theo thứ tự tăng dần.
Input: 18 9 33 4 84 32
Output: 4 9 18 32 33 84
Sắp xếp chèn (Insertion Sort)
Chương trình sau dãy số theo tứ tự tăng dần bằng thuật toán sắp xếp chèn:
package com.hiepsiit.baitap;
import java.util.Scanner;
public class insertionSort {
private static void nhap_mang(int []A, int n) {
Scanner scn = new Scanner(System.in);
for(int i=0; i<n; i++) {
System.out.print("A[ "+i+" ]: ");
A[i] = scn.nextInt();
}
}
private static void xuat_mang(int []A, int n) {
for(int i=0; i<n; i++) {
System.out.println("A[ "+i+" ]: "+A[i]);
}
}
private static void sap_xep_chen(int []A, int n) {
for(int i=1; i<n; i++) {
int x = A[i];
int y = i;
while( y > 0 && A[ y - 1 ] > x ) {
A[y]=A[y-1];
y--;
}
A[y]=x;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int []A;
int n=0;
Scanner scn = new Scanner(System.in);
System.out.print("Nhập số: ");
n = scn.nextInt();
A = new int[n];
nhap_mang(A, n);
System.out.println("Mảng sau khi sắp xếp (Insertion Sort)");
sap_xep_chen(A, n);
xuat_mang(A, n);
}
}
Kết quả: