public void SelectSort(int[] array)
{
  int len = array.Length;
  int minValIndex; //无序区中最小值的索引
  int i; //无序区的第一个值的索引
  int j; //无序区中的值索引

  //最后一轮不用比了,无论怎么都是最小的了(len-1)
  for (i = 0; i < len-1; i++)
  {
    //将无序区中的第一个值的索引记录下来,作为内层循环中的第一步的对比参照
    minValIndex = i;
    for (j = i+1; j < len; j++)
    {
      //开始对无序区进行比较,将小的排在前面
      if (array[j] < array[minValIndex])
      minValIndex = j;
    }

    // 如果发现无序区中的最小值不是在它的第一位,那么将最小值和第一个值交换位置,那么无序区的第一位成了无序区的最小值
    //i=0,无序区为整个array(0 len),通过比较,这一轮得出整个array的最小值
    //i=1, 无序区缩小(1-len),通过比较,这一轮得出次小值
    //......
    //i=len-1,最后一轮比较完毕,array排序完成。

    if (minValIndex != i)
    {
      int temp = array[i];
      array[i] = array[minValIndex];
      array[minValIndex] = temp;
    }
  }

}

  一切的算法都可以通过它的表现形式的帮助来得到理解可以将这种排序,反应到生活中。

  比如要从你们班中找出最猥琐的人,那么我们开始之前要做的是:全班同学排成一列,并准备好一个令牌,这个令牌用来记录这是第几轮选拔,和这轮选拔中得出的最猥琐者站在哪个位置。

  第一轮选拔开始鸟,首先,往令牌上记录好这是第一轮选拔,我在令牌的第一个格子里面填上”1“,从排头开始,将他和他后面的同学进行逐一比较,比较到第三位同学的时候,发现次同学蓬头垢面,不修边幅,哥哥毫不犹豫将牌牌贴到此同学的背背上,此同学立即满眼怒火向哥喷来,“嘿,哥们,不要这样嘛”,这一轮还未选拔完呢,全班最猥琐不一定是你噢!",我奸诈地吐槽道,然后转身,继续对他后面的同学进行审核,去到第14个位置的时候,我惊呆了,额的神噢,我们班原来还有这等极品啊,脑子里立马闪出的时候《喜剧之王》里面那个被学生们“张柏芝”侍候的那位兄台,满口黑牙,一脸淫笑,鼻子里面还藏着数根虫虫,哇靠,第一非你莫属了。为了选拔的严谨性,我还是例行对他后面的同学进行了一遍走马观花式的选拔,然后冲回到那位极品的旁边,“哥,你当老二,没人敢当老大了,你站到第一个位置,叫那个同学过来你这个位置吧”,说完,我忘令牌的第二个格子里面填上”14“,他就屁颠屁颠地按着我的说法去做了,哈,看来极品就是极品,连动作都如此匹配,耶,第一轮选拔完毕。

  第二轮开始:首先要做的还是”令牌“,抹掉第一轮的记录。这是第二轮哈,所以令牌要记上2,最猥琐的同学暂时为,这一轮的第一位同学,他站在第二个位置上,所以令牌的第二个格子填上”2“先,通过一番对比,发现了站在第7位的同学为这一轮的”幸运儿“,我将他的站位写在令牌的第二个格子上。记着就是和第一轮那个极品同样的操作,完成了次极品的选拔。

。。。

。。。

。。。

  还剩两位同学,慧眼一看,高下立分,change position。选拔完成

转载于:https://www.cnblogs.com/Ellfelo/archive/2012/09/23/Ellfio.html

C# 直接选择排序(史上最清晰,最通俗)相关推荐

  1. 史上最清晰的函数空间讲解

    史上最清晰的函数空间讲解 1.什么是数学的空间? 数学的空间定义了研究工作的对象和遵循的规则,研究工作的对象在空间中称之为元素,遵循的规则在空间中称之为结构,结构有线性结构(加法和数乘)和拓扑结构(距 ...

  2. 单链表-史上最清晰的尾插法和头插法

    02.单链表-史上最清晰的尾插法和头插法 1.单链表 链表是一系列的存储数据元素的单元,通过指针(引用)串联起来的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个域是指向其他单元的指针. ...

  3. 选择排序法:思路清晰

    选择排序的思路 选择排序法是通过比较最值的方式来进行排序的,打个比方: int arr[]={2,1,4,5,3},这里面我们用眼睛看的话是1最小,所以1和2换位置变成了{1,2,4,5,3},第二轮 ...

  4. 史上最清晰的Java内存模型介绍

    这篇文章的标题看起来很霸气,于是我毫不犹豫转了~并且同样起了个霸气侧漏的标题! 本文转载自:再有人问你Java内存模型是什么,就把这篇文章发给他. 网上有很多关于Java内存模型的文章,在<深入 ...

  5. 史上最清晰的红黑树讲解(上)(转自CarpenterLee,纯学习用)

    本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程. 总体介绍 Java TreeMap实现了So ...

  6. 史上最清晰的红黑树讲解(上)

    本文github地址 本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程. 总体介绍 Java T ...

  7. 史上最清晰的三路快速排序

    更多精彩文章,请关注公众号[程序员小熊]. 排序算法不论是在刷题还是面试都经常遇到,掌握它能提升自己的算法功力从而增加自己面试通过的几率. 本文主要介绍一下三路快排,并以微软的一道面试题 leetco ...

  8. sensei鼠标测试软件,【SteelSeriesSenseiMLG限量版游戏鼠标评测】史上最清晰完整 游戏鼠标微动更换教程-中关村在线...

    01旗舰鼠标难逃故障 自己动手修复 [中关村在线]SteelSeriesSenseiMLG限量版游戏鼠标评测: [中关村在线键鼠频道原创] 玩家进行游戏操作时,其鼠标点击.移动频率,要远高于普通用户日 ...

  9. 史上最清晰ufo视频 土耳其新闻

    工作之余,我们也要轻松轻松嘛   ~@^_^@~ 下载看看了 宇宙太大了,我想除了地球,应该还有有生命的星球

最新文章

  1. 每日一皮:程序员的生存状态 ...
  2. RabbitMQ(一):Hello World程序
  3. PS制作立体效果——圆柱
  4. JVM 堆内存设置原理
  5. PHP 错误与异常 笔记与总结(1)错误(Deprecated,Notice,Warning)
  6. 稳住 稳住 。不要急!
  7. 数据结构与程序的关系_java主程:数据结构和算法的区别别再搞混了,否则开除...
  8. 【macOS付费软件推荐】第6期:Reeder
  9. android 按键流程及映射
  10. 梦成真——一个普通学校计算机系学生的出国梦
  11. 也谈正方形不是长方形
  12. 矩阵的矩阵指数函数_精通R编程:使用包,创建对象和基本矩阵函数
  13. java hl7v3_hl7 java 解析
  14. 卷积神经网络案例:中文字体识别——隶书和行楷
  15. 将APP变成黑白的颜色
  16. r语言mfrow全程_R语言(绘图入门)
  17. 大学生面试技巧与注意事项|实战经验
  18. 电子邮件地址怎么写,国内电子邮件服务商有哪些,怎么申请注册邮件地址大全账号?
  19. C语言编写Johnson-Trotter算法生成排列
  20. java poi写入excel_Java使用POI读取和写入Excel指南

热门文章

  1. oracle全局高速缓存,Oracle技术之设置系统全局区SGA命令
  2. c语言数组中循坏移动问题,如何将一个数组的元素循环左移?
  3. 2数据库表空间容量查询_Zabbix监控达梦数据库表空间
  4. linux先cd到mysql的运行路径下,Linux常用的服务器运维命令
  5. 使用@onetomany取不到值_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用
  6. xp系统开机必须启动的服务器,XP系统如何关闭开机启动项呢?
  7. 十八年开发经验分享(三)问题解决篇(中)
  8. echo字符集 shell_Shell echo命令:输出字符串
  9. Python 25 Django跨域请求
  10. 用Kotlin撸一个图片压缩插件ImageSlimming-导学篇(一)