- class Quicksort {
- private void quickSwap(string[] Array, int Left, int Right)
- {
- string Temp = Array[Right];
- Array[Right] = Array[Left];
- Array[Left] = Temp;
- }
- public void quickSort(string[] Array, int Left, int Right)
- {
- int LHold = Left;
- int RHold = Right;
- Random ObjRan = new Random();
- int Pivot = ObjRan.Next(Left, Right);
- quickSwap(Array, Pivot, Left);
- Pivot = Left;
- Left++;
- while (Right >= Left)
- {
- int cmpLeftVal = Array[Left].CompareTo(Array[Pivot]);
- int cmpRightVal = Array[Right].CompareTo(Array[Pivot]);
- if ((cmpLeftVal >= 0) && (cmpRightVal < 0))
- {
- quickSwap(Array, Left, Right);
- }
- else
- {
- if (cmpLeftVal >= 0)
- {
- Right--;
- }
- else
- {
- if (cmpRightVal < 0)
- {
- Left++;
- }
- else
- {
- Right--;
- Left++;
- }
- }
- }
- }
- quickSwap(Array, Pivot, Right);
- Pivot = Right;
- if (Pivot > LHold)
- {
- quickSort(Array, LHold, Pivot);
- }
- if (RHold > Pivot + 1)
- {
- quickSort(Array, Pivot + 1, RHold);
- }
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/080620133927.html
来源: http://www.codesnippet.cn/detail/080620133927.html