Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chương trình Java sắp xếp chuỗi theo thứ tự bảng chữ cái

Trong bài viết này, chúng ta sẽ tìm hiểu cách sắp xếp chuỗi theo thứ tự bảng chữ cái. String là kiểu dữ liệu chứa một hoặc nhiều ký tự, bao quanh bởi dấu nháy kép. Chuỗi là dãy các ký tự.

Ví dụ minh họa

Đầu vào:

Chuỗi đầu vào: javaprogram

Đầu ra mong muốn:

Ký tự sau sắp xếp: [a, a, a, g, j, m, o, p, r, r, v]

Thuật toán

  1. Bắt đầu
  2. Khai báo chuỗi input_string, mảng char charArray, char temp, int string_size
  3. Gán giá trị
  4. Gán chuỗi vào mảng ký tự
  5. Duyệt mảng 2 vòng lặp lồng (bubble sort), so sánh phần tử liền kề, hoán đổi nếu sai thứ tự
  6. Hiển thị mảng đã sắp xếp
  7. Kết thúc

Ví dụ 1: Xử lý trực tiếp trong main (Bubble Sort)

import java.util.Arrays;

public class SortString {
    public static void main(String args[]) {
        int temp, string_size;
        String input_string = "javaprogram";
        System.out.println("Chuỗi được định nghĩa: " + input_string);
        char charArray[] = input_string.toCharArray();
        string_size = charArray.length;
        for (int i = 0; i < string_size; i++) {
            for (int j = i + 1; j < string_size; j++) {
                if (charArray[i] > charArray[j]) {
                    temp = charArray[i];
                    charArray[i] = charArray[j];
                    charArray[j] = (char) temp;
                }
            }
        }
        System.out.println("\nKý tự sau sắp xếp: " + Arrays.toString(charArray));
    }
}

Kết quả

Chuỗi được định nghĩa: javaprogram
Ký tự sau sắp xếp: [a, a, a, g, j, m, o, p, r, r, v]

Ví dụ 2: Sử dụng phương thức tách biệt (OOP) - Code gốc có lỗi syntax

Code ví dụ 2 trong bài gốc có lỗi: static void sort(string input_string) nên là String. Dưới đây là phiên bản sửa:

import java.util.Arrays;

public class SortString {
    static void sort(String input_string) {
        int temp, string_size;
        char charArray[] = input_string.toCharArray();
        string_size = charArray.length;
        for (int i = 0; i < string_size; i++) {
            for (int j = i + 1; j < string_size; j++) {
                if (charArray[i] > charArray[j]) {
                    temp = charArray[i];
                    charArray[i] = charArray[j];
                    charArray[j] = (char) temp;
                }
            }
        }
        System.out.println("\nKý tự sau sắp xếp: " + Arrays.toString(charArray));
    }
    public static void main(String args[]) {
        String input_string = "javaprogram";
        System.out.println("Chuỗi được định nghĩa: " + input_string);
        sort(input_string);
    }
}

Kết quả

Chuỗi được định nghĩa: javaprogram
Ký tự sau sắp xếp: [a, a, a, g, j, m, o, p, r, r, v]

Lưu ý: Cách hiệu quả hơn là dùng Arrays.sort(charArray) hoặc chuyển về List và dùng Collections.sort().