Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ (C+;+;)在相等元素的快速排序中添加随机性_C++_Random_Quicksort - Fatal编程技术网

C++ (C+;+;)在相等元素的快速排序中添加随机性

C++ (C+;+;)在相等元素的快速排序中添加随机性,c++,random,quicksort,C++,Random,Quicksort,我使用以下代码对std.vector中的元素进行排序 struct element { int order; int someValue; }; int comp( element a, element b ) { if (a.order < b.order) return true; return (rand() % 2) == 0; } vector.quickSort(comp); struct元素{ 整数阶; int值; };

我使用以下代码对std.vector中的元素进行排序

struct element {
    int order;
    int someValue;
};

int comp( element a, element b ) {
    if (a.order < b.order)
        return true;
    return (rand() % 2) == 0;
}

vector.quickSort(comp);
struct元素{
整数阶;
int值;
};
内部薪酬(要素a、要素b){
如果(a.订单
如果我试图在具有相同顺序值的元素上添加随机性,那么该代码正确吗

这个代码正确吗

你真的应该用一些数据编写一个测试来检查它


如果你要写一个测试,你会看到一些错误,并知道为什么,如果我们看一下

if (a.order < b.order)
    return true;
return (rand() % 2) == 0;

vector没有快速排序成员function@Mitch假设元素的顺序是递减计数器,那么我需要从数组中随机选取一个计数器为零的元素,然后将其重置为给定值。如果每次需要选择一个元素来完成任务时,我都能对数组进行排序job@billz不间断电源!我忘了提到我使用的是Bullet Physics库中的btAlignedObjectArray,它有一个快速排序方法非常感谢,非常有教育意义的答案
if (a.order == b.order)
    return (rand() % 2) == 0;
else
    return a.order < b.order;