C# 排序算法2:选择排序
选择排序法 ,是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。
原理:1. 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,
2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3. .以此类推,直到全部待排序的数据元素排完。
/// <summary> /// 选择排序 /// </summary> /// <param name="arr"></param> /// <returns></returns> static int[] SelectSort(int[] arr) { for (int i = 0; i < arr.Length ; i++)// 4.继续遍历,将最小数,放入第二个,第三个...第n个位置 { int minValueIndex = i; //最小值的下标位置,初始设为第一个位置 for (int j = i+1; j < arr.Length; j++)// 2. 比较遍历后,找出这些待排序数据中最小值的下标位置 { if (arr[j] < arr[minValueIndex])//1. 比较两元素,将较小值的下标位置赋值给 minValueIndex { minValueIndex = j; } } //3. 将选出的最小元素,与第一个位置的元素,进行交换(即选出了最小的一个数,放入了第一个位置) var temp = arr[i]; arr[i] = arr[minValueIndex]; arr[minValueIndex] = temp; } return arr; }
排序结果
static void Main(string[] args) { Console.WriteLine($"数据算法"); var arr1= GetArrayData(8, 1, 22); Console.WriteLine($"生成未排序数据:{ShowArray(arr1)}"); var arr2 = BubbleSort(arr1); Console.WriteLine($"冒泡排序:{ShowArray(arr2)}"); var arr3= SelectSort(arr1); Console.WriteLine($"选择排序:{ShowArray(arr3)}"); Console.ReadLine(); }
付费内容,请联系本人QQ:1002453261
本文来自博客园,作者:明志德道,转载请注明原文链接:https://www.cnblogs.com/for-easy-fast/p/14032537.html