对数器的使用(用来生成随机数组来判断排序算法是否正确)

对数器生成一个随机数组来排序,从而验证。

下面用C++写一个简单的对数器来完成冒泡排序。

代码:

#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
using namespace std;
//用模板整型和浮点型都可以使用
template<typename T>
void BubbleSort(T array[],int len)
{
    if (len < 2)
    {
        return;
    }
    int i, j;
    //j从数组末尾开始,i一直遍历到j,相邻比较,如果当前大于后一个元素就交换
    //遍历一遍后j--,说明最大数已经到了数组末尾,下一次选出次大数放在倒数第二个位置,所以j--
    for (j = len - 1; j >= 0; j--)
        for (i = 0; i < j; i++)
        {
            if (array[i] > array[i + 1])
            {
                int temp = array[i];
                array[i] = array[i + 1];
                array[i + 1] = temp;
            }
        }
}
template<typename TT>
void random_array(TT arr1,TT arr2)
{
  //设置成静态变量可以防止每次调用生成一样的随机数
  //生成-100到100的均匀分布随机数,e为随机引擎
static uniform_int_distribution<int> u(-100, 100);static default_random_engine e;
  //生成两个一样的随机数组,长度为100
for (int i = 0; i < 100; i++) { arr1[i] = u(e); arr2[i] = arr1[i]; }
  //一个用sort函数进行排序,一个用我们写的排序方法进行排序。如果完全一样,那么result的值一直不变,为1,打印Nice! sort(arr1,arr1
+100); BubbleSort(arr2,100); bool result = 1; for (int i = 0; i < 100; i++) { if (arr1[i] != arr2[i]) { result = 0; break; } } if (result == 1) { cout << "Nice!" << endl; } } int main() { int arr1[100], arr2[100]; for (int i = 0; i < 10; i++) { random_array(arr1, arr2); cout << arr1[0] << endl; //看一下每一次生成的元素是否一样 } return 0; }

 

posted @ 2018-01-24 15:38  _NewMan  阅读(237)  评论(0编辑  收藏  举报