คำอธิบายปัญหา
สมมติว่าเรามีอาร์เรย์ที่มี n องค์ประกอบ เราต้องกลับลำดับองค์ประกอบในอาร์เรย์เอง (in-place) ไม่ใช่แค่พิมพ์ในลำดับถอยหลัง
ตัวอย่าง
หากอินพุตเป็น n = 6, arr = [9, 8, 7, 2, 4, 3] ผลลัพธ์จะเป็น [3, 4, 2, 7, 8, 9]
ขั้นตอนการแก้ปัญหา
- วนลูป i จาก 0 ถึง n/2 - 1
- สลับ arr[i] กับ arr[n - i - 1] โดยใช้ตัวแปรชั่วคราว temp
- พิมพ์อาร์เรย์หลังกลับลำดับแล้ว
โค้ดตัวอย่าง
#include <stdio.h>
#include <stdlib.h>
#define n 6
int main() {
int arr[n] = {9, 8, 7, 2, 4, 3};
int temp;
for (int i = 0; i < n/2; i++) {
temp = arr[i];
arr[i] = arr[n - i - 1];
arr[n - i - 1] = temp;
}
for (int i = 0; i < n; i++) {
printf("%d,", arr[i]);
}
return 0;
}
อินพุต
6, 9, 8, 7, 2, 4, 3
เอาต์พุต
3,4,2,7,8,9,