递归代码快速排序
Recursion codes for quick sort
以下是我正在努力的函数,该函数是根据递归操作进行快速分类的定义:
void quick_sort(QVector<RoiInfo> &roi, int begin, int end)
{
int i, j;
int pivot;
RoiInfo work;
int half = (begin+end)/2;
pivot = roi[half].roi.y;
i = begin;
j = end;
//I am confused about the codes below, what kind of sorting it is to do
while( 1 )
{
while( roi[i].roi.y > pivot ){ ++i; }
while( roi[j].roi.y < pivot ){ --j; }
if( i >= j ){ break; }
work = roi[i];
roi[i] = roi[j];
roi[j] = work;
i++;
j--;
}
if( begin < i - 1 ){ quick_sort( roi, begin, i - 1 ); }
if( j + 1 < end ){ quick_sort( roi, j + 1, end ); }
}
在上述代码中,RoiInfo
是一个用户定义的类,该类具有CvRect
类型的roi
的公共成员,该类型是定义由(x, y, width, height)
指定的矩形的OPENCV类。任何人都可以向我解释,最好用一个示例来解释quick_sort
功能的情况?非常感谢!
是通过 y
坐标排序吗?!(我无法评论。)比较仅在y
坐标上进行,显然它分类了从上到下的矩形。
以下进行快速分配的分区。
while( roi[i].roi.y > pivot ){ ++i; }
while( roi[j].roi.y < pivot ){ --j; }
,如果左侧或右侧剩下的元素,我们会重复出现较小的子问题。
if( begin < i - 1 ){quick_sort( roi, begin, i - 1 );} //elements to the left
if( j + 1 < end ){quick_sort( roi, j + 1, end );} //elements to the right
相关文章:
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 如何修复我的快速排序实现?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在 MIPS 中快速排序
- 不正确的比较和交换计数器输出用于快速排序功能
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 并行快速排序分区中的隔离错误
- 在实现合并排序代码时无法计算所有反转
- 实现 3 路分区以实现快速排序
- 为什么这个快速排序实现给出了一个奇怪的输出
- 我写了一个快速的排序代码,逻辑似乎很正确,但是控制台上没有输出
- 递归代码快速排序
- 快速排序代码说明
- 在c中快速排序代码,在64位Windows机器上无法解释的行为
- 快速排序算法代码
- 快速排序代码无法正常工作
- 这个快速排序代码有什么问题?
- 插入排序不工作的快速排序代码