排序算法---插入排序
基本思想:
插入排序是一种比较直观的排序算法。具体逻辑为:
1.从第一个元素开始,该元素可以认为已经被排序。
2.取出下一个元素,在已经排序的元素序列中从后向前扫描。
3.如果钙元素小于前面的元素(已排序),则依次与前面元素进行比较,如果小于则交换,直到找到大于该元素的就停止。
4.如果该元素大于前面的元素(已排序),则重复步骤2。
5.重复步骤2~4直到所有元素都排序好。
时间复杂度:
最好情况:
比较:N-1
交换:0
最坏情况:
比较:N2/2
交换:N2/2
平均情况:
比较:N2/4
交换:N2/4
具体实现:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataStructure { public class InsertionSort<T>:BaseSort<T> where T:IComparable<T> { public override void Sort(T[] array) { if (array != null) { for (int i = 1; i < array.Length; i++) { for (int k = i; k > 0; k--) { if (array[k].CompareTo(array[k - 1]) < 0) base.Swap(array, k - 1, k); else break; } } } else throw new ArgumentNullException(); } } }