zoukankan      html  css  js  c++  java
  • 快速排序

         首先选定一个数为基准数,先对这个数进行归位。即从数列右边、左边分别开始(注意顺序,先右后左),从右向左寻找比基准数小的数,从左向右寻找比基准数大的数(且要保证右边的序数 j 大于左边的序数 i ),分别找到之后,对两数进行交换,如此循环,直到 i 等于 j。循环结束之后,将 i 位置的数与基准数进行交换。最后,运用递归,再对已经归位的基准数左右两边进行排序。具体同上。


    例:对数列{6, 1, 2, 7, 9, 3, 4, 5, 10, 8}进行从小到大对排序。

    #include <iostream>
    using namespace std;
    
    int a[100] {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
    
    int main(void)
    {
        void func(int, int);
        
        func(0, 9);
        
        for(int i = 0; i < 10; i++) {
            cout << a[i] << ' ';
        }
        
        return 0;
    }
    
    
    void func(int left, int right)
    {
        if(left > right)
            return;
        
        int i = left, j = right, temp = a[left], t;
        
        while(i != j)   {
            while(j>i && a[j]>=temp)
                j--;
            
            while(i<j && a[i]<=temp)
                i++;
            
            if(i < j)   {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
        
        a[left] = a[i];
        a[i] = temp;
        
        func(left, i-1);
        func(i+1, right);
        
        return;
    }
    
  • 相关阅读:
    表格边框
    vue路由守卫
    移动端专用css
    原生js写的的浏览器历史记录
    有趣
    表格边框
    路由
    php安装
    curl
    case when
  • 原文地址:https://www.cnblogs.com/limyel/p/6545461.html
Copyright © 2011-2022 走看看