zoukankan      html  css  js  c++  java
  • 选择排序-直接选择排序

    直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:

    第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,

    第二次从R{1}~R[n-1]中选取最小值,与R[1]交换,....,

    第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,

    第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,

    总共通过n-1次,得到一个按排序码从小到大排列的有序序列.

    public static void SelectionSort(int[] sortNum)
    {
    int temp = 0; int baseNum = 0; //第一层循环一共进行了n-1遍历 for (var i = 0; i < sortNum.Length - 1; i++) { //设定一下基准值,每次遍历开始都设置为第一个 //例如:第一次遍历基准为sortNum[0],第二次为sortNum[1] ... baseNum = sortNum[i]; //第二层循环,遍历每一项从中找到最小的,放在最前面 for (var j = i; j < sortNum.Length - 1; j++) { //如果基准值大于该项,就进行交换 if (baseNum > sortNum[j + 1]) { //交换大小值 temp = sortNum[j + 1]; sortNum[j + 1] = sortNum[i]; sortNum[i] = temp; //重新设定基准值为小值 baseNum = temp; } } } }

     别人的实现,上面的是通过直接记录最小值,也可以通过记录下标的方式

     static List<int> SelectionSort(List<int> list)
     {
        //要遍历的次数
        for (int i = 0; i < list.Count - 1; i++)
        {
            //假设tempIndex的下标的值最小
            int tempIndex = i;
    
            for (int j = i + 1; j < list.Count; j++)
            {
                //如果tempIndex下标的值大于j下标的值,则记录较小值下标j
                if (list[tempIndex] > list[j])
                    tempIndex = j;
            }
    
            //最后将假想最小值跟真的最小值进行交换
            var tempData = list[tempIndex];
            list[tempIndex] = list[i];
            list[i] = tempData;
         }
          return list;
     }
  • 相关阅读:
    pyqy5——控件2
    pyqt5——自定义控件
    pyqt5——绘图
    pyqt5——菜单和工具栏
    pyqt5——拖拽
    nodejs运行的时候报错:Error: write EIO以及乱码解决方式
    windows设置控制台编码格式为UTF-8
    eclipse删除的文件如何恢复。
    crobtab不执行定时任务的原因及解决办法
    springmvc找不到对应的requestmapping
  • 原文地址:https://www.cnblogs.com/dcz2015/p/5278609.html
Copyright © 2011-2022 走看看