参考左神思路。
引入对比的方法和暴力方法进行对比。
随机产生testtime数据量的测试数据。
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdlib>
using namespace std;
void BubbleSort_Test(int numbers[], int length)
{
if (numbers == nullptr || length <= 0)
{
cout << "数组为空" << endl;
return;
}
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - 1 - i; j++)
{
if (numbers[j] > numbers[j + 1])
swap(numbers[j], numbers[j + 1]);
}
}
}
void comparator(int numbers[], int len)
{
// 输入比较的暴力方法
sort(numbers, numbers + len);
}
bool isEqual(int array1[], int array2[], int len)
{
for (int i = 0; i < len; ++i)
{
if (array1[i] != array2[i])
return false;
}
return true;
}
int* cppyArray(int arr[], int len)
{
int* newArray = new int [len];
for (int i = 0; i < len; ++i)
{
newArray[i] = arr[i];
}
return newArray;
}
int* generateRandomArray(int maxsize, int maxvalue, int& len)
{
len = rand() % maxsize;
int* arr = new int[len];
for (int i = 0; i < len; ++i)
{
arr[i] = (int)( rand()% maxvalue );
}
return arr;
}
void print(int num[], int len)
{
for (int i = 0; i < len; ++i)
{
cout << num[i] << " ";
}
cout << endl;
}
void Test_Sort()
{
int testtime = 50000;
int maxsize = 100;
int maxvalue = 100;
bool succeed = true;
for (int i = 0; i < testtime; ++i)
{
int len;
int *array1 = generateRandomArray(maxsize, maxvalue, len);
int *array2 = cppyArray(array1, len);
//print(array1, len);
//print(array2, len);
BubbleSort_Test(array1, len);
comparator(array2, len);
//print(array1, len);
//print(array2, len);
if (!isEqual(array1, array2, len))
{
succeed = false;
print(array1, len);
print(array2, len);
break;
}
}
cout << succeed << endl;
}
int main()
{
int num[] = { 2, 6, 9, 45, 0 };
//comparator(num, 5);
//print(num, 5);
Test_Sort();
return 0;
}