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]); } }