Open bosthhe1 opened 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);//这里也需要注意 }
为了解决大量重复的数字的一种方法,和前后指针有点像,但是又结合了快慢指针