Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C กลับลำดับองค์ประกอบในอาร์เรย์ (In-place)


คำอธิบายปัญหา

สมมติว่าเรามีอาร์เรย์ที่มี n องค์ประกอบ เราต้องกลับลำดับองค์ประกอบในอาร์เรย์เอง (in-place) ไม่ใช่แค่พิมพ์ในลำดับถอยหลัง

ตัวอย่าง

หากอินพุตเป็น n = 6, arr = [9, 8, 7, 2, 4, 3] ผลลัพธ์จะเป็น [3, 4, 2, 7, 8, 9]

ขั้นตอนการแก้ปัญหา

  1. วนลูป i จาก 0 ถึง n/2 - 1
  2. สลับ arr[i] กับ arr[n - i - 1] โดยใช้ตัวแปรชั่วคราว temp
  3. พิมพ์อาร์เรย์หลังกลับลำดับแล้ว

โค้ดตัวอย่าง

#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,