Sắp xếp mảng là một bài toán quan trọng trong lập trình, giúp ta sắp xếp một dãy số theo thứ tự tăng dần hoặc giảm dần. Đây là một bài toán cơ bản trong lập trình và là một trong những kiến thức nền tảng quan trọng mà ai cũng cần nắm vững.
Sắp xếp mảng 1 chiều theo thứ tự tăng dần
Trong bài viết này, chúng ta sẽ cùng nhau giải quyết bài toán sắp xếp mảng 1 chiều theo thứ tự giảm dần. Để đơn giản, chúng ta sẽ sử dụng thuật toán sắp xếp đổi chỗ trực tiếp (Interchange Sort) – một thuật toán đơn giản và dễ hiểu.
Ý tưởng để sắp xếp mảng 1 chiều theo thứ tự giảm dần là:
- Lấy ra phần tử đầu tiên và so sánh nó với các phần tử còn lại trong mảng.
- Nếu phần tử nào có giá trị lớn hơn giá trị ban đầu, thì hoán đổi vị trí của hai phần tử đó.
- Tiếp tục cho tới khi lặp qua tất cả các phần tử trong mảng.
- Lúc này, phần tử đầu tiên sẽ là phần tử lớn nhất trong mảng.
- Tiếp tục lặp lại quá trình trên với các phần tử còn lại trong mảng.
Chương trình sắp xếp mảng 1 chiều giảm dần với C
Dưới đây là code chương trình sắp xếp mảng 1 chiều theo thứ tự giảm dần viết bằng ngôn ngữ C:
#include <stdio.h>
void sapXepGiamDan(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, 3, 9, 1, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sapXepGiamDan(arr, n);
printf("Mang sau khi sap xep giam dan:n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
Kết quả khi chạy chương trình:
Chương trình sắp xếp mảng 1 chiều giảm dần với C++
Dưới đây là code chương trình sắp xếp mảng 1 chiều theo thứ tự giảm dần viết bằng ngôn ngữ C++:
#include <iostream>
using namespace std;
void sapXepGiamDan(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, 3, 9, 1, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sapXepGiamDan(arr, n);
cout << "Mang sau khi sap xep giam dan:" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
Kết quả khi chạy chương trình: