zoukankan      html  css  js  c++  java
  • 纪念逝去的岁月——C/C++快速排序

    快速排序

    代码

    #include <stdio.h>
    
    void printList(int iList[], int iLen)
    {
        int i = 0;
        for(i = 0; i < iLen; i++)
        {
            printf("%d ", iList[i]);
        }
        printf("
    ");
    }
    
    void printList(int iList[], int iBegin, int iEnd)
    {
        int i = 0;
        for(i = 0; i < iBegin; i++)
        {
            printf("%c ", '_');
        }
        for(i = iBegin; i < iEnd; i++)
        {
            printf("%d ", iList[i]);
        }
        printf("
    ");
    }
    
    int _quickSort(int iList[], int iLeft, int iRight)
    {
        if(iLeft >= iRight)
        {
            return 0;
        }
        int i = iLeft, j = iRight;
        int t = iList[i];
        printf("%d<->%d mid(%d) : ", i, j, t);
        while(i < j)
        {
            while(t < iList[j] && j > i)
            {
                j--;
            }
            if(j > i)
            {
                iList[i] = iList[j];
                i++;
            }
    
            while(t >= iList[i] && i < j)
            {
                i++;
            }
            if(i < j)
            {
                iList[j] = iList[i];
                j--;
            }
        }
        iList[i] = t;
        printList(iList, 10);
        _quickSort(iList, iLeft, i - 1);
        _quickSort(iList, i + 1, iRight);
    
        return 0;
    }
    
    int Quick(int iList[], int iLen)
    {
        _quickSort(iList, 0, iLen - 1);
        return 0;
    }
    
    int main()
    {
        int iNum = 10;
        int iList[10] = {6, 7, 5, 9, 0, 1, 2, 4, 3, 8};
        printf("src : ");
        printList(iList, iNum);
        putchar('
    ');
        Quick(iList, iNum);
        putchar('
    ');
        printf("dst : ");
        printList(iList, iNum);
    
        return 0;
    }

    编译

    $ g++ -g -o quickSort quickSort.cpp

    运行

    $ ./quickSort 
    src : 6 7 5 9 0 1 2 4 3 8 
    
    0<->9 mid(6) : 3 4 5 2 0 1 6 9 7 8 
    0<->5 mid(3) : 1 0 2 3 5 4 6 9 7 8 
    0<->2 mid(1) : 0 1 2 3 5 4 6 9 7 8 
    4<->5 mid(5) : 0 1 2 3 4 5 6 9 7 8 
    7<->9 mid(9) : 0 1 2 3 4 5 6 8 7 9 
    7<->8 mid(8) : 0 1 2 3 4 5 6 7 8 9 
    
    dst : 0 1 2 3 4 5 6 7 8 9

    再见……

     

  • 相关阅读:
    无约束梯度算法
    resp协议
    union和union all
    cgi和fastcgi
    证书认证原理
    HTTPS的实现原理
    redis消息队列优缺点有哪些?redis消息队列的优缺点
    cname是个什么东西
    CDN
    PHP 删除数组中的元素
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4331600.html
Copyright © 2011-2022 走看看