Ví dụ mảng (hay dãy số) ban đầu có các phần tử là: 1,2,3,4,5,6 nếu như đảo ngược lại dãy số trên ta sẽ có: 6,5,4,3,2,1.
Để thực hiện đảo ngược mảng arr[n] có n phần tử, ta cần thực hiện 2 bước sau đây:
- Bước đầu tiên: Khởi tạo chỉ mục bắt đầu và kết thúc đó là: start = 0, end = n-1
- Bước thứ hai: Trong vòng lặp, hoán đổi arr[start] với arr[end] và thay đổi start và end như sau: start = start +1, end = end – 1
Chương trình đảo ngược mảng trong C
#include <stdio.h>
int main(){
//so luong phan tu cua mang
int n = 6;
//khai bao start = 0;
int start = 0;
//khao bao end = n - 1
int end = n - 1;
//khai bao mang
int arr[6] = {1,2,3,4,5,6};
//hien thi mang ban dau
printf("MANG BAN DAU\n");
for(int i = 0; i < n; i++){
printf("%d \t",arr[i]);
}
//trong khi start < end thuc hien dao nguoc phan tu
while (start < end)
{
//hoan vi phan tu tai vi tri start cho phan tu tai vi tri end
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
//tang start
start++;
//giam end
end--;
}
//hien thi mang duoc dao nguoc
printf("\n\nMANG DUOC DAO NGUOC\n");
for(int i = 0; i < n; i++){
printf("%d \t",arr[i]);
}
}
Đảo ngược mảng trong C – viết dạng hàm
Hàm void DaoNguoc(int arr[], int start, int end) dưới đây nhận vào int arr[] là mảng cần đảo ngược, int start là biến bắt đầu và int end là biến kết thúc để thực hiện cho việc kiểm tra giá trị phần tử và hoán vị chúng
#include <stdio.h>
void DaoNguoc(int arr[], int start, int end){
//trong khi start < end thuc hien dao nguoc phan tu
while (start < end)
{
//hoan vi phan tu tai vi tri start cho phan tu tai vi tri end
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
//tang start
start++;
//giam end
end--;
}
}
int main(){
//so luong phan tu cua mang
int n = 6;
//khai bao start = 0;
int start = 0;
//khao bao end = n - 1
int end = n - 1;
//khai bao mang
int arr[6] = {1,2,3,4,5,6};
//hien thi mang ban dau
printf("MANG BAN DAU\n");
for(int i = 0; i < n; i++){
printf("%d \t",arr[i]);
}
//goi ham dao nguoc
DaoNguoc(arr,start,end);
//hien thi mang duoc dao nguoc
printf("\n\nMANG DUOC DAO NGUOC\n");
for(int i = 0; i < n; i++){
printf("%d \t",arr[i]);
}
}
ở cuối trang, hay nút màu XANH
ở gần giữa trang, coi chừng nhầm nút