排序算法---选择排序

基本思想:

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

时间复杂度:

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();

        }

    }

}

 

你可能感兴趣的:(选择排序)