cpp generate random number to fill array,order the array via quick sort

//model.util.h

#include <iostream>
#include <random>
template<typename T>
    T get_random_num(T min,T max)
    {
        std::random_device rd;
        std::mt19937_64 mt(rd());
        std::uniform_int_distribution<T> uid(min,max);
        return uid(mt);
    }

    template<typename T>
    void fill_T_array(T min, T max,T *arr,int len)
    {
        for(int i=0;i<len;i++)
        {
            arr[i]=get_random_num(min,max);
        }
    }

    template<typename T>
    void print_T_array(T *arr,int len)
    {
        for(int i=0;i<len;i++)
        {
            std::cout<<arr[i]<<"t";
        }
        std::cout<<std::endl<<std::endl;
    }

    void fill_print_T_demo(int len);

    template<typename T>
    void swap_t(T *left,T *right)
    {
        T temp=*left;
        *left=*right;
        *right=temp;
    }

    template<typename T>
    int partition_array(T* arr,int low,int high)
    {
        T pivot=arr[high];
        int i=low-1;
        for(int j=low;j<high;j++)
        {
            if(arr[j]<pivot)
            {
                i=i+1;
                swap_t(&arr[i],&arr[j]);
            }
        }
        swap_t(&arr[i+1],&arr[high]);
        return i+1;
    }

    template<typename T>
    void quick_sort_T(T *arr,int low,int high)
    {
        if(low<=high)
        {
            int pivot=partition_array(arr,low,high);
            quick_sort_T(arr,low,pivot-1);
            quick_sort_T(arr,pivot+1,high);
        }
    }

    void quick_sort_demo(int len);


//model/util.cpp
void util::quick_sort_demo(int len)
{
    std::uint32_t *arr=new std::uint32_t[len];
    fill_T_array<std::uint32_t>(0,UINT32_MAX,arr,len);
    std::cout<<"Before quick sort:"<<std::endl;
    print_T_array(arr,len);
    quick_sort_T<std::uint32_t>(arr,0,len-1);
    print_T_array(arr,len);
    print_log("finished in " + std::string(__FUNCTION__) + ",line " + std::to_string(len));
}

void util::fill_print_T_demo(int len)
{
    std::uint32_t *arr = new std::uint32_t[len];
    for (int i = 0; i < len; i++)
    {
        arr[i] = get_random_num<std::uint32_t>(0, UINT32_MAX);
    }
    print_T_array<std::uint32_t>(arr, len);
    print_log("finished in " + std::string(__FUNCTION__) + ",line " + std::to_string(len));
}

//main.cpp


void quick_sort_demo(int len)
{
    util ul;
    ul.quick_sort_demo(len);
}

int main(int args, char **argv)
{    
   quick_sort_demo(atoi(argv[1]));
}

 

 

Compile

g++ -I. *.cpp ./model/*.cpp -o h1 -luuid

 

 

Run

./h1 1000

 

 

cpp generate random number to fill array,order the array via quick sort

 

原文链接: https://www.cnblogs.com/Fred1987/p/17156707.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    cpp generate random number to fill array,order the array via quick sort

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/401134

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月19日 上午9:08
下一篇 2023年4月19日 上午9:08

相关推荐