c#实现选择排序的示例
1.工作原理(算法思路)
- 给定一个待排序数组,找到数组中最小的那个元素
- 如果最小元素不是待排序数组的第一个元素,则将其和第一个元素互换
- 在剩下的元素中,重复1、2过程,直到排序完成。
2.动图演示
3.C#代码实现
根据原理设计算法:
class Program { //选择排序法 private static void chooseSort(int[] array) { //第一个for循环:每一次循环完成后得到的当前的最大元素都与第i位做交换 for (int i = 0; i < array.Length; i++) { //min为最小元素的索引 int min = i; //第二个for循环:将当前的array[j]与array[min]作比较,如果array[j]更小,则替换min的当前索引 for (int j = i + 1; j < array.Length; j++) { if (array[min] > array[j]) { min = j; } } //当第二个for循环完成时,array[min]中存储的就是当前最小元素 //将array[min]与array[i]交换 int temp = array[i]; array[i] = array[min]; array[min] = temp; } } //打印输出数组 private static void printArray(int[] array) { foreach (int item in array) { Console.Write(item + "\t"); } Console.WriteLine(); } static void Main(string[] args) { int[] array = new int[10] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; printArray(array); chooseSort(array); printArray(array); Console.ReadKey(); } }
输出结果
4.性能分析
1)复杂度
2)选择排序法特点
- 执行的比较和交换次数
比较: N*(N-1)/2
交换: N
- 运行时间与输入无关
在每一次的for循环结束后并不能为下一次的循环提供有效信息。这种性质在某些时候是一种缺陷。在数组大小相同时,当一个几乎已经有序的数组使用选择排序法花费的时间和无序数组所花费的时间是一致的。
- 数据的移动量最少
交换的次数和数组的大小呈线性关系,其他的排序算法对数据移动量都是线性对数级别或平方级别的。
以上就是c#实现选择排序的示例的详细内容,更多关于c# 选择排序的资料请关注脚本之家其它相关文章!
相关文章
C#/VB.NET 将Word与Excel文档转化为Text
这篇文章主要介绍了C#/VB.NET 将Word与Excel文档转化为Text,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下2022-08-08Unity的IPreprocessBuild实用案例深入解析
这篇文章主要为大家介绍了Unity的IPreprocessBuild实用案例深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-05-05C#中哈希表(HashTable)用法实例详解(添加/移除/判断/遍历/排序等)
这篇文章主要介绍了C#中哈希表(HashTable)用法,简单讲述了哈希表的原理并结合实例形式详细分析了C#针对哈希表进行添加、移除、判断、遍历、排序等操作的实现技巧,需要的朋友可以参考下2016-06-06
最新评论