Sắp xếp mảng 1 chiều theo thứ tự tăng dần là một bài toán quan trọng trong lập trình. Đây là một trong những khái niệm cơ bản mà ai cũng phải nắm vững khi học lập trình. Bằng cách sắp xếp dãy số theo thứ tự tăng dần, chúng ta có thể tổ chức dữ liệu một cách dễ dàng và tiện lợi.
Thuật toán sắp xếp đổi chỗ trực tiếp
Trong bài viết này, chúng ta sẽ sử dụng thuật toán "Sắp xếp đổi chỗ trực tiếp" để sắp xếp mảng 1 chiều theo thứ tự tăng dần. Đây là một thuật toán đơn giản và dễ hiểu, phù hợp cho những người mới bắt đầu làm quen với lập trình.
Ý tưởng của thuật toán này là lấy phần tử đầu tiên trong mảng và so sánh nó với các phần tử còn lại. Nếu có phần tử nào nhỏ hơn phần tử đầu tiên, ta hoán đổi vị trí của hai phần tử đó. Tiếp tục quá trình này cho tới khi kết thúc mảng. Khi đó, phần tử đầu tiên sẽ là phần tử nhỏ nhất trong mảng. Lặp lại quá trình này cho tất cả các phần tử trong mảng.
Dưới đây là minh họa cho thuật toán sắp xếp đổi chỗ trực tiếp:
Minh họa thuật toán sắp xếp đổi chỗ trực tiếp (Nguồn: wikipedia.org)
Chương trình sắp xếp mảng 1 chiều tăng dần với C
Dưới đây là đoạn mã C để sắp xếp mảng 1 chiều theo thứ tự tăng dần:
#include
void interchangeSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 3, 1};
int n = sizeof(arr) / sizeof(arr[0]);
interchangeSort(arr, n);
printf("Mang sau khi sap xep theo thu tu tang dan: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
Kết quả khi chạy chương trình sẽ là:
Chương trình sắp xếp mảng 1 chiều tăng dần với C++
Dưới đây là đoạn mã C++ để sắp xếp mảng 1 chiều theo thứ tự tăng dần:
#include
using namespace std;
void interchangeSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 3, 1};
int n = sizeof(arr) / sizeof(arr[0]);
interchangeSort(arr, n);
cout << "Mang sau khi sap xep theo thu tu tang dan: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
Đoạn mã này chỉ khác đoạn mã C ở phần nhập xuất. Kết quả khi chạy chương trình sẽ như sau: