cuốn sách gpt4 ai đã làm

Làm thế nào để đệ quy thoát ra khỏi lệnh gọi quicksort đệ quy đầu tiên?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:05:30 hai mươi bốn 4
mua khóa gpt4 Nike

Tín hiệu nào khiến chương trình thông báo "OK, lệnh gọi quickSort đệ quy đầu tiên đã hoàn thành; tiếp tục với lệnh gọi đệ quy thứ hai"?

phân vùng int (int arr[], int low, int high)
{
int trục = arr[cao]; // trục
int i = (thấp - 1); // Chỉ số của phần tử nhỏ hơn

for (int j = thấp; j <= cao- 1; j++)
{
nếu (arr[j] <= trục)
{
i++; // tăng chỉ số của phần tử nhỏ hơn
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
trở lại (i + 1);
}

void quickSort(int arr[], int low, int high)
{
nếu (thấp < cao)
{
int pi = phân vùng (arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, cao);
}
}

câu trả lời hay nhất

Vấn đề thực tế của bạn bắt nguồn từ Ngăn xếp đệ quy .

Trước tiên hãy tìm hiểuđệ quy , về cơ bản tạo thành một phương thức liên tục gọi chính nó trong các trường hợp ngày càng nhỏ hơn, lặp lại cùng một quy trình không đệ quy mỗi lần cho đến khi đạt đến trường hợp cơ sở, tại thời điểm đó nó dừng lại.

hiện hữuSắp xếp nhanhTrường hợp cơ bản của đệ quy là các danh sách có kích thước bằng 0 hoặc một, không bao giờ cần phải sắp xếp. Nếu không đúng như vậy thì mảng sẽ không được sắp xếp. Đó là lý do tại sao chúng tôi gọi lại phương thức QuickSort hai lần cho mảng nhỏ hơn.

Chúng tôi bao gồm từ A[0] đến A[i - 2] một phía mảng của tất cả các phần tử và chứa các phần tử Lặp lại phía mảng của A[i] thành A[A.length - 1].

Tại sao chúng ta bỏ qua A[i-1]? Đơn giản - nó đã ở đúng nơi.

Về thuật toán - Làm thế nào để đệ quy thoát ra khỏi lệnh gọi quicksort đệ quy đầu tiên? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/42182609/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress