排序算法---选择排序

基本思想:

从待排序的记录序列中选择关键码(或最大)的记录并将它与序列中的第一个记录交换位置。

时间复杂度:

n(n-1)/2

具体实现:

抽象基类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataStructure
{
    public abstract class BaseSort<T> where T : IComparable
    {
        /// <summary>
        /// 排序抽象方法
        /// </summary>
        /// <param name="array"></param>
        public abstract void Sort(T[] array);

        /// <summary>
        /// 元素交换
        /// </summary>
        /// <param name="array"></param>
        /// <param name="replacedIndex"></param>
        /// <param name="index"></param>
        public void Swap(T[] array, int SwapedIndex, int index)
        {
            T temp = array[index];
            array[index] = array[SwapedIndex];
            array[SwapedIndex] = temp;
        }
    }
}

具体实现类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataStructure
{
    public class SelectionSort<T> : BaseSort<T> where T : IComparable
    {
        public override void Sort(T[] array)
        {
            if (array != null)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    int min = i;
                    for (int j = i + 1; j < array.Length; j++)
                    {
                        if (array[min].CompareTo(array[j]) > 0)
                            min = j;
                    }
                    base.Swap(array,i, min);
                }
            }
            else
                throw new ArgumentNullException();
        }
    }
}

 

posted @ 2014-03-13 21:54  fang_beny  阅读(264)  评论(0编辑  收藏  举报