c快排后三个超时,求大佬解答
查看原帖
c快排后三个超时,求大佬解答
1465940
Samsara1楼主2024/12/14 17:56
#include<stdio.h>
#include<stdlib.h>

int i, j, pivot;

void swap(int* array, int a, int b)
{
    int temp = array[a];
    array[a] = array[b];
    array[b] = temp;

}


int partition(int* array, int low, int high)
{
    pivot = array[high];
    i = low;
    for (j = low; j < high; j++)
    {
        if (array[j] < pivot)
        {
            swap(array, i, j);
            i++;
        }
    }
    swap(array, i, high);
    return i;

}

void quickSort(int* array, int low, int high)
{
    if (low < high)
    {
        int pi = partition(array, low, high);
        quickSort(array, low, pi - 1);
        quickSort(array, pi + 1, high);
    }
}



int main()
{
    int N;
    int* A;
    scanf("%d", &N);
    A = (int*)malloc(N*sizeof(int));
    if (A == NULL)
    {
        return -1;
    }
    int n = N;
    while (n--)
    {
        scanf("%d", &A[N - n - 1]);
    }
    quickSort(A, 0, N - 1);
    for (int k = 0; k < N; k++)
    {
        printf("%d ", A[k]);
    } 
    free(A);
}
2024/12/14 17:56
加载中...