C++ (C+;+;)在相等元素的快速排序中添加随机性
我使用以下代码对std.vector中的元素进行排序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值; };
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;