zoukankan      html  css  js  c++  java
  • 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("
    ");
    }
    
    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年郑州轻工业学院ACM校赛题) B迷宫
    (2015年郑州轻工业学院ACM校赛题) A 彩票
    POJ 1861 Network
    动态逆序对
    K大数查询
    Dynamic Rankings
    Cleaning
    Boxes
    P3601 签到题
    How many integers can you find
  • 原文地址:https://www.cnblogs.com/moxiaopeng/p/4849848.html
Copyright © 2011-2022 走看看