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
- Bắt đầu
- Khai báo chuỗi
input_string, mảng charcharArray, chartemp, intstring_size - Gán giá trị
- Gán chuỗi vào mảng ký tự
- 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ự
- Hiển thị mảng đã sắp xếp
- 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().