int quicksort_r(char *path, char *a[],int start,int end){
    if (start>=end) {
        return 0;
    }
    char *pivot = a[end];
    char *swp;
    //set a pointer to divide array into two parts
    //one part is smaller than pivot and another larger
    int pointer = start;
    int i;
    for (i = start; i < end; i++) {
        if (file_compare1(path, a[i], pivot) < 0){
            if (pointer != i) {
                //swap a[i] with a[pointer]
                //a[pointer] behind larger than pivot
                swp = a[i];
                a[i] = a[pointer];
                a[pointer] = swp;
            }
            pointer++;
        }
    }
    //swap back pivot to proper position
    swp = a[end];
    a[end] = a[pointer];
    a[pointer] = swp;
    quicksort_r(path, a, start,pointer - 1);
    quicksort_r(path, a,pointer + 1,end);
    return 0;
}
Example #2
0
int quicksort_r(int* a,int start,int end){
    if (start>=end) {
        return 0;
    }
    int pivot=a[end];
    int swp;
    //set a pointer to divide array into two parts
    //one part is smaller than pivot and another larger
    int pointer=start;
    int i;
    for (i=start; i<end; i++) {
        if (a[i]<pivot) {
            if (pointer!=i) {
                //swap a[i] with a[pointer]
                //a[pointer] behind larger than pivot
                swp=a[i];
                a[i]=a[pointer];
                a[pointer]=swp;
            }
            pointer++;
        }
    }
    //swap back pivot to proper position
    swp=a[end];
    a[end]=a[pointer];
    a[pointer]=swp;
    quicksort_r(a,start,pointer-1);
    quicksort_r(a,pointer+1,end);
    return 0;
}
int quicksort(char *path, char *fileList[], int len){
    quicksort_r(path, fileList, 0,len-1);
    return 0;
}
Example #4
0
int quicksort(int*a, int len){
    quicksort_r(a,0,len-1);
    return 0;
}