排序算法---选择排序
基本思想:
从待排序的记录序列中选择关键码(或最大)的记录并将它与序列中的第一个记录交换位置。
时间复杂度:
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(); } } }