moxiaopeng

C语言实现快排

#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); 
}

  

发表于 2015-09-30 17:58  莫小鹏  阅读(513)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-12-09
  • 2021-12-19
  • 2021-04-25
  • 2021-09-28
  • 2021-12-29
  • 2021-09-25
  • 2021-12-08
  • 2021-11-17
猜你喜欢
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
  • 2021-12-29
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
相关资源
相似解决方案