码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现快排

时间:2015-09-30 19:35:37      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>

void swap(int *pa, int *pb)
{
    int t = *pa;
    *pa = *pb;
    *pb = t;
}

int partion(int *array, int begin, int end)
{
    if (array == NULL || begin < 0 || end < 0)
        return -1; 
    int pivot = array[end];
    int small = begin -1; 
    for(int i = begin; i < end; i++ ){
        if(array[i] <= pivot) {
            ++small;
            if(small != i){ 
                swap(&array[small], &array[i]);
            }   
        }   
    }   
    swap(&array[++small], &array[end]);
    return small;
}

void qsort(int array[], int begin, int end)
{
    if (end == begin)
        return;
    int index = partion(array, begin, end);
    if (index == -1) 
        return;
    if (index > begin)
        qsort(array, begin, index - 1); 
    if (end > index)
        qsort(array, index + 1, end);
}

void display(int a[], int n)
{
    for(int i = 0; i < n; i ++) 
        printf("%d ", a[i]);
    printf("\n");
}

int main()
{
    int a[] = {5, 4, 3, 2,6};
    int n = sizeof(a)/sizeof(a[0]);
    display(a, n); 
    qsort(a, 0, n -1);
    display(a, n); 
}

  

C语言实现快排

标签:

原文地址:http://www.cnblogs.com/moxiaopeng/p/4849848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!