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

รวมอาร์เรย์ที่ไม่ได้จัดเรียงสองอาร์เรย์เป็นลำดับที่จัดเรียงแล้วด้วย C++

ข้อความโจทย์

เขียนฟังก์ชันที่รับอาร์เรย์ที่ไม่ได้จัดเรียงสองอาร์เรย์ และรวมพวกมันเป็นอาร์เรย์ใหม่ในลำดับที่จัดเรียงแล้ว

arr1[] = {10, 5, 7, 2}
arr2[] = {4, 17, 9, 3}
result[] = {2, 3, 4, 5, 7, 9, 10, 17}

อัลกอริทึม

1. รวมอาร์เรย์ที่ไม่ได้จัดเรียงสองอาร์เรย์เข้าในอาร์เรย์ใหม่
2. จัดเรียงอาร์เรย์ที่สร้างขึ้นใหม่

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

#include <iostream>
#include <algorithm>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;

void mergeAndSort(int *arr1, int n1, int *arr2, int n2, int *result) {
    merge(arr1, arr1 + n1, arr2, arr2 + n2, result);
    sort(result, result + n1 + n2);
}

void displayArray(int *arr, int n) {
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main() {
    int arr1[] = {10, 5, 7, 2};
    int arr2[] = {4, 17, 9, 3};
    int result[SIZE(arr1) + SIZE(arr2)];
    cout << "First array: " << endl;
    displayArray(arr1, SIZE(arr1));
    cout << "Second array: " << endl;
    displayArray(arr1, SIZE(arr2));
    mergeAndSort(arr1, SIZE(arr1), arr2, SIZE(arr2), result);
    cout << "Merged and sorted array: " << endl;
    displayArray(result, SIZE(arr1) + SIZE(arr2));
    return 0;
}

ผลลัพธ์

เมื่อคอมไพล์และรันโปรแกรมด้านบน จะได้ผลลัพธ์ดังนี้ -

First array: 10 5 7 2
Second array: 10 5 7 2
Merged and sorted array: 2 3 4 5 7 9 10 17