mobo0 bắt đầu chủ đề từ 1 năm trước

@billy21 ·


Đưa ra một thuật toán sắp xếp hợp nhất và Ứng dụng không thành công khi tôi thực thi mã của mình. Tôi đã thử khắc phục sự cố và có vẻ như nó bị lỗi khi thuật toán hợp nhất trong phương thức mergeSort được kích hoạt. Mọi hỗ trợ hoặc phê bình về mã của tôi sẽ được hoan nghênh.

void merge(int* array, int first, int last) {
    int size = (last - first) + 1;
    int *array2 = new int[];

    int i = first;
    int mid = (first + last) / 2;
    int k = 0;
    int j = mid + 1;

    while (k < size) {
        if ((i <= mid) && (array[i] < array[j])) {
            array2[k++] = array[i++];
        }
        else
        {
            array2[k++] = array[j++];
        }
    }
    for (k = 0; k < size; k++) {
        array[first + k] = array2[k];
    }

    delete array2;
}

void mergeSort(int *array, int first, int last) {
    int mid;
    if (first < last) {
        mid = (first + last) / 2; //divide in half
        mergeSort(array,first, mid); //first recursive call
        mergeSort(array,mid + 1, last); //second recursive call
        merge(array,first, last);// call merge functon
    }
}

chức năng chính:

int main() {
    int N = 8;
    int left, right;

    left = 0;
    right = 7;

    int c[] = { 10, 5, 33, 16, 14, 56, 50, 7 }; //unsorted
    cout << "Before merge sort : " << endl;

    for (int i = 0; i < N; i++) {
        cout << c[i] << endl;
    }

    cout << "check if sorted before merge sort. " << endl;
    cout << isSorted(c, N) << endl;

    mergeSort(c, left, right);

    //values after sorting
    for (int i = 0; i < N; i++) {
        cout << c[i] << endl;
    }
}

Tôi đã xem video này về phương pháp sắp xếp hợp nhất theo scaler topics và video này thực sự cung cấp nhiều thông tin nhưng tôi vẫn cần giải thích thêm. Vì vậy, ai đó có thể giới thiệu một nguồn khác hoặc hỗ trợ tôi giải quyết vấn đề này không?

Viết câu trả lời

Drop Images

0 Bình luận