求助这段排序有时会死循环
查看原帖
求助这段排序有时会死循环
95664
x2c2y4楼主2020/11/12 09:45

算法课不允许用算法库和容器,自己写了一个,昨天交学校oj一直有一个点死循环(以前用这个都没问题),换std::sort就过了

这个快排能过洛谷,不知道是哪里出错了,希望能指出其中的错误。

template <typename T>
void sort(T* start, T* end)
{
    if (start >= end - 1) return;
    int mid = (end - start)/2;
    T pivot = *(start + mid);
    std::swap(*(start + mid), *(start));
    T *i = start, *j = end - 1;
    while (i < j)
    {
        while (pivot < *j) j--;
        if (i < j) *i++ = *j;
        while (*i < pivot && i < j) i++;
        if (i < j) *j-- = *i;
    }
    *i = pivot;
    sort(start, i);
    sort(i + 1, end);
}
2020/11/12 09:45
加载中...