bosthhe1 / -

数据结构与算法(初阶)
0 stars 0 forks source link

三指针法(意会的时候意会错了,自己写的,居然能排) #26

Open bosthhe1 opened 1 year ago

bosthhe1 commented 1 year ago

为了解决大量重复的数字的一种方法,和前后指针有点像,但是又结合了快慢指针

void ThreeRoadSort(int *a,int begin,int end)
{
    if (begin >= end)
        return;
    int key = begin;
    int left = key + 1;
    int right = end;
    while (right >= left)//需要这里这个区间
    {
        if (a[key] > a[left])
        {
            swap(a[key], a[left]); key++; left++;
        }
        else if (a[key] < a[left])
        {
            swap(a[left], a[right]); right--;
        }
        else
        {
            left++;
        }
    }
    ThreeRoadSort(a, begin, key - 1);
    ThreeRoadSort(a, left, end);//这里也需要注意
}