close

參考答案:

========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;
        }
    }
}
 

======================

執行結果:

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dino 的頭像
    Dino

    Dino`s Note

    Dino 發表在 痞客邦 留言(0) 人氣()