我有一个动态分配的对象数组。一些数组由对象填充,但其他部分为空。当我使用冒泡排序对数组中的对象进行排序时,它排序正确,但为空的数组部分位于填充的数组部分的前面。有没有办法将空对象推到数组的后面而不是前面?
阵列中发生的事情的图片:
| null | null | null | object | object |
我希望数组看起来像的图片:
| object| object | null | null | null |
这是我的冒泡排序代码:
::bubbleSort()
{
bool flag = true;
obj temp;
int j = 0;
while(flag)
{
flag = false;
j++;
for(int i = 0; i < (max - j); i++)
{
if(arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i]= arr[i+1];
arr[i+1] = temp;
flag = true;
}
}
}
}
这是我如何定义我的 arr:
private:
obj *arr;
然后在我的构造函数中
max = 25
arr = new obj[max];
最佳答案
您要找的函数可能是std::partition ,如果你想要的只是在后面有空值。如果您还需要对其他值进行排序,std::sort是正确的选择。两者都允许您定义一个定义排序或分区顺序的比较,允许您自定义元素的排序方式。
关于c++ - 如何对动态分配的对象数组中的空对象进行排序,以便空对象位于数组的后面 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369514/