using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectSort { class Program { static void Main(string[] args) { int[] arry = { 1,4,5,6,2,9,0,8,3,10}; SelecteSort(arry, arry.Length); for (int i = 0; i < arry.Length; i++) Console.WriteLine(arry[i]); Console.ReadKey(); } /// <summary> /// 选择排序 /// 思路:从数组中得到一个最小的值,然后放到数据的第一位。然后从剩下的值中选择一个最小的,在放到第二位。 /// 类推下去,将数据从小到大进行排序 /// </summary> /// <param name="arry"></param> /// <param name="length"></param> public static void SelecteSort(int[] arry,int length) { for(int i=0;i<length;i++) { //定义最小值的下标 int minIndex = i; for(int j=i+1;j<length;j++) { if (arry[j] < arry[minIndex]) minIndex = j; } //进行交换 Swap(arry, minIndex, i); } } /// <summary> /// 交换俩个值 /// </summary> /// <param name="arry"></param> /// <param name="i"></param> /// <param name="j"></param> public static void Swap(int[] arry,int i,int j) { int tmp = arry[i]; arry[i] = arry[j]; arry[j] = tmp; } } }
因为经历了俩次for循环,所以时间复杂度是O(n^2),这种排序很简单但是非常慢的。