C++ get random via random_device, mt19937_64,uniform_int_distribution, quick sort

#include <chrono>
#include <ctime>
#include <fstream>
#include <iostream>
#include <random>
#include <sstream>
#include <thread>
#include <unistd.h>
#include <uuid/uuid.h>

using namespace std;

char *dtValue=(char*)malloc(20);
char *uuidValue=(char*)malloc(40);

char* getTimeNow()
{
    time_t rawTime=time(nullptr);
    struct tm tmInfo=*localtime(&rawTime);
    strftime(dtValue,20,"%Y%m%d%H%M%S",&tmInfo);
    return dtValue;
}

char *getUuid()
{
    uuid_t newUUID;
    uuid_generate(newUUID);
    uuid_unparse(newUUID,uuidValue);
    return uuidValue;
}



random_device rd;
mt19937_64 mt(rd());

template<typename T>
T getRandom(T min,T max)
{
    uniform_int_distribution<T> uid(min,max);
    return uid(mt);
}



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


  template<typename T>
  int partitionAsc(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 quickSortAsc(T* arr,int low,int high)
{
    if(low<high)
    {
        int pivot=partitionAsc(arr,low,high);
        quickSortAsc(arr,low,pivot-1);
        quickSortAsc(arr,pivot+1,high);
    }
} 

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

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

template<typename T>
void arrayTDemo(T min,T max,int len)
{
    T *arr=new T[len];
    getTArray(arr,min,max,len);
    cout<<"Before quick sort:"<<endl;
    printTArray(arr,len);
    quickSortAsc(arr,0,len-1);
    cout<<"After quick sort:"<<endl;
    printTArray(arr,len);
    delete []arr;
    cout<<getTimeNow()<<","<<__FUNCTION__<<","<<__LINE__<<endl;
}

int main(int args,char **argv)
{
    arrayTDemo<uint32_t>(0,UINT32_MAX,atoi(argv[1]));
}
g++ -g -std=c++2a -I. *.cpp -o h1 -luuid
./h1 100000

 

C++  get random via random_device, mt19937_64,uniform_int_distribution, quick sort

 

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

欢迎关注

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

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

    C++  get random via random_device, mt19937_64,uniform_int_distribution, quick sort

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

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

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

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

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

相关推荐