服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - c#实现选择排序的示例

c#实现选择排序的示例

2022-10-10 15:37欧气柠檬 C#

这篇文章主要介绍了c#实现选择排序的示例,帮助大家更好的理解和使用排序算法,感兴趣的朋友可以了解下

1.工作原理(算法思路)

  1. 给定一个待排序数组,找到数组中最小的那个元素
  2. 如果最小元素不是待排序数组的第一个元素,则将其和第一个元素互换
  3. 在剩下的元素中,重复1、2过程,直到排序完成。

2.动图演示

c#实现选择排序的示例

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();

}

}

输出结果

c#实现选择排序的示例

4.性能分析

1)复杂度

c#实现选择排序的示例

2)选择排序法特点

  • 执行的比较和交换次数

比较: N*(N-1)/2
交换: N

  • 运行时间与输入无关

在每一次的for循环结束后并不能为下一次的循环提供有效信息。这种性质在某些时候是一种缺陷。在数组大小相同时,当一个几乎已经有序的数组使用选择排序法花费的时间和无序数组所花费的时间是一致的。

  • 数据的移动量最少

交换的次数和数组的大小呈线性关系,其他的排序算法对数据移动量都是线性对数级别或平方级别的。

以上就是c#实现选择排序的示例的详细内容,更多关于c# 选择排序的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/Lyd1563891920/p/13782257.html

延伸 · 阅读

精彩推荐
  • C#C#实现简单文本编辑器

    C#实现简单文本编辑器

    这篇文章主要为大家详细介绍了C#实现简单文本编辑器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    xujinshan36111102022-07-19
  • C#C#线程处理系列之线程池中的I/O线程

    C#线程处理系列之线程池中的I/O线程

    这篇文章主要介绍了C#线程处理系列之线程池中的I/O线程,在这篇文章中将介绍如何用线程池中的I/O线程来执行I/O操作,感兴趣的小伙伴们可以参考一下...

    Learning hard10482021-11-17
  • C#C#使用HttpWebRequest与HttpWebResponse模拟用户登录

    C#使用HttpWebRequest与HttpWebResponse模拟用户登录

    这篇文章主要为大家详细介绍了C#使用HttpWebRequest与HttpWebResponse模拟用户登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    道.玄11492021-12-31
  • C#C#常见应用函数实例小结

    C#常见应用函数实例小结

    这篇文章主要介绍了C#常见应用函数,结合实例形式总结分析了C#常用的时间、URL、HTML、反射、小数运算等相关函数,需要的朋友可以参考下...

    pan_junbiao9222021-12-22
  • C#深入理解C#中的扩展方法

    深入理解C#中的扩展方法

    下面这篇文章主要给大家介绍了关于c#中扩展方法的相关资料,文中通过示例代码介绍的非常详细,供大家学习参考,感兴趣的朋友可以了解下...

    炎炎设计11922022-09-08
  • C#C#将PDF转为多种图像文件格式的方法(Png/Bmp/Emf/Tiff)

    C#将PDF转为多种图像文件格式的方法(Png/Bmp/Emf/Tiff)

    这里介绍将PDF转换多种不同格式的图像文件格式,如PNG,BMP,EMF,TIFF等,同时,转换文档也分为转换全部文档和转换部分文档为图片两种情况,本文也将作...

    E-iceblue5422022-02-19
  • C#C#生成PDF文件流

    C#生成PDF文件流

    这篇文章主要为大家详细介绍了C#生成PDF文件流的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    恝置4372021-12-30
  • C#C#线程委托实现原理及方法解析

    C#线程委托实现原理及方法解析

    这篇文章主要介绍了C#线程委托实现原理及方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    八英里3792022-10-09