參考答案:
========Program.cs=========
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CSD04
{
class Program
{
static void Main(string[] args)
{
List<int> sequence = new List<int>();
sequence.Add(391);
sequence.Add(43);
sequence.Add(74);
sequence.Add(32);
sequence.Add(94);
sequence.Add(563);
sequence.Add(54);
sequence.Add(726);
sequence.Add(84);
sequence.Add(55);
sequence.Add(96);
sequence.Add(132);
sequence.Add(531);
sequence.Add(652);
sequence.Add(456);
// TODO: use QuickSort class's Sort() method to sort number sequence.
QuickSort qs = new QuickSort(sequence);
int[] a = qs.Sort().ToArray();
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine("{0:000}",a[i]);
}
Console.ReadLine();
}
}
}
=========================
========QuickSort.cs=========
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CSD04
{
public class QuickSort
{
int[] array;
public QuickSort(IEnumerable<int> num)
{
array = num.ToArray();
}
public IEnumerable<int> Sort()
{
sort(0, array.Count()-1);
return array;
}
private void sort(int min,int max)
{
if (max <= min)
return;
// middle pivot
int pivotIndex = (min + max) / 2;
int pivot = array[pivotIndex];
Swap(pivotIndex, max);
int swapIndex = min;
for (int i = min; i < max; i++)
{
if (array[i] <= pivot)
{
Swap(i, swapIndex);
swapIndex++;
}
}
Swap(swapIndex, max);
sort(min, swapIndex - 1);
sort(swapIndex + 1, max);
}
private void Swap(int i,int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
======================
執行結果: