• 初级算法


    效率高于冒泡排序和选择排序。

    初始数组:{ 27,1,11,200,31,4,58,78,23,47,9,10000};

    第一轮QuickSort的排序见,

    27,1,11,200,31,4,58,78,23,47,9,10000
    
    9,1,11,200,31,4,58,78,23,47,27,10000
    
    9,1,11,27,31,4,58,78,23,47,200,10000
    
    9,1,11,23,31,4,58,78,27,47,200,10000
    
    9,1,11,23,27,4,58,78,31,47,200,10000
    
    9,1,11,23,4,27,58,78,31,47,200,10000

    中间值是27,可以看出27左边的数值都比它小,右边都比它大。

    然后再此分组,简称"分而治之"

    详细代码:

    #include <iostream>
    
    void swap(int* a, int* b);
    void QuickSort(int* num, int low, int high);
    
    int main()
    {
        int a[] = { 27,1,11,200,31,4,58,78,23,47,9,10000};
        int low = 0, high = sizeof(a)/sizeof(int);
        
        QuickSort(a, low, high-1);
    
        for (int i = 0; i < high; i++)
        {
            std::cout << a[i] << " ";
        }
    
        return 0;
    }
    
    
    void swap(int* a, int* b)
    {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
    
    void QuickSort(int* num, int low, int high)
    {
        int i = low,j = high;
        int* b = num;
        int key = b[low];
    
        while (low >= high)
        {
            return;
        }
    
        while (low < high)
        {
            while (low < high && key <= b[high])
            {
                high--;
            }
            if (key > b[high])
            {
                swap(&b[low], &b[high]);
                low++;
            }
            while (low < high && key > b[low])
            {
                low++;
            }
            if (key < b[low])
            {
                swap(&b[low], &b[high]);
                high--;
            }    
    
            for (int k = 0; k < 12; k++)
            {
                std::cout << b[k] << " ";
            }
            std::cout << std::endl;
        }
        QuickSort(b, i, low - 1);
        QuickSort(b, low + 1, j);
    }
  • 相关阅读:
    关于spring中Assert的应用(方法入参检测工具类)
    索引与排序,重复索引与冗余索引,索引碎片与维护
    大数据量分页优化
    理想的索引
    索引覆盖
    聚簇索引
    mysql 索引
    表的优化与列类型选择
    mysql show profiles 使用分析sql 性能
    show processlist,sysbench压力测试工具
  • 原文地址:https://www.cnblogs.com/strive-sun/p/14435746.html
Copyright © 2020-2023  润新知