`

Quick Sort

    博客分类:
  • Sort
阅读更多
/* 
 * File:   main.c
 * Author: lonecat
 *
 * Created on 2011年4月3日, 下午4:41
 */

#include <stdio.h>

void swap(int* v1, int* v2){
    int tmp = *v1;
    *v1 = *v2;
    *v2 = tmp;
}

int partition(int* num, int p, int r ){
   // printf("in partition\n");
    printf("p=%d, r=%d\n", p, r);
    int key = num[r];
    int j = p;
    int i = j-1;
    while(j < r){
        if(num[j] <= key){
            i++;
            swap(num+j, num+i);
            print(num,r+1);
        }
        j++;
    }
    swap(num+i+1, num+r);
    print(num,r+1);
    printf("%d\n ", i+1);
    return i+1;
}

void qsort(int* num, int p, int r  ){
    if((r-p) > 0){
       int q = partition(num,p,r);
       qsort(num,p,q-1);
       qsort(num, q+1,r);
       
    }
}

/*
 * 
 */
int main(int argc, char** argv) {
    int num[] = {5,2,4,6,1,3,7,9,4,8};
    print(num,10);
    qsort(num, 0, 9);
    print(num,10);
    return (0);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics