using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace zbo
{
[TestFixture]
public class QuickSort
{
int[] buffer = { 5, 21, 6, 8, 9, 32, 13, 12, 41, 2, 3, 4 };
[Test]
public void QuickSortTest()
{
DoQuickSort(0, buffer.Length - 1);
PrintAll(buffer);
}
private void PrintAll(int[] buffer)
{
for (int i = 0; i < buffer.Length; i++)
{
Console.Write(buffer[i] + ", ");
}
}
private void DoQuickSort(int start, int end)
{
if (end > start)
{
int middle = (start + end) / 2;
while (true)
{
int leftSentry = start;
int rightSentry = end;
while (buffer[leftSentry] <= buffer[middle] && leftSentry < middle)
leftSentry++;
while (buffer[rightSentry] >= buffer[middle] && rightSentry > middle)
rightSentry--;
if (leftSentry == rightSentry) break;
else
{
Swap(leftSentry, rightSentry);
}
}
DoQuickSort(start, middle - 1);
DoQuickSort(middle + 1, end);
}
}
private void Swap(int leftSentry, int rightSentry)
{
int tmp = buffer[leftSentry];
buffer[leftSentry] = buffer[rightSentry];
buffer[rightSentry] = tmp;
}
}
}
12-23
10-15
1532
07-26
1199
10-20
1154
10-12
680
02-08
664
02-03
658