zoukankan      html  css  js  c++  java
  • 对比生成测试算法用例

    在对两个算法进行比较时,通常需要两个或多个算法对同一个数组进行排序,所以需要先对数组进行复制

    1 int* copyIntArray(int a[],int n)
    2 {
    3     int *arr=new int[n];
    4     copy(a,a+n,arr);
    5     return arr;
    6 }

    使用copy函数进行数组复制

    有些算法对无序数组和接近有序数组的排序性能差异较大,所以需要定义一个生成基本有序数组的函数

     1 int* generateNearlyOrderedArray(int n,int swapTimes)
     2 {
     3     int *arr=new int[n]; 
     4     for(int i=0;i<n;i++)
     5         arr[i]=i;
     6     
     7     srand(time(NULL));
     8     for(int i=0;i<swapTimes;i++)
     9     {
    10         int posx=rand()%n;
    11         int posy=rand()%n;
    12         swap(arr[posx],arr[posy]);
    13     }
    14 
    15     return arr;
    16 }

    函数参数两个,一个是数组长度,一个是无序数对数

    首先通过循环复制生成一个有序数组,然后根据srand和rand()生成随机数,并对没对随机数对应的数组元素进行交换。需要注意的是,生成的随机数需要对n取余,以保证随机数在数组长度范围内。

  • 相关阅读:
    博客园的第一篇博客
    I-如何办好比赛
    塞特斯玛斯塔
    字典序最大的子序列
    百练POJ 1657:Distance on Chessboard
    百练POJ2750:鸡兔同笼
    HDU3790最短路径问题
    HDU 2544最短路Dijkstra算法
    快速幂【倍增+二分】
    树的高度
  • 原文地址:https://www.cnblogs.com/Bird-of-Paradise/p/6387548.html
Copyright © 2011-2022 走看看