zoukankan      html  css  js  c++  java
  • 算法2(直选)

    【直接选择排序】

    4 2 5 3 9 6 8

    直接选择排序的方式和人类的想法还是比较相似的,排除一些火星移民。

    基本思想:第n次,从数组第n个位置开始,选一个最小的数,然后放到这个n位置上,从上面的这个例子就是

    2 4 5 3 9 6 8
    2 3 4 5 9 6 8

    大概看懂了哦?下面是代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Diagnostics;
    
    namespace 直接选择排序
    {
        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 1; i < 5; i++)
                {
                    List list = new List();
                    for (int j = 0; j < 2000; j++)
                    {
                        Thread.Sleep(1);
                        list.Add(new Random((int)DateTime.Now.Ticks).Next(0, 10000));
                    }
                    Console.WriteLine("\n第" + i + "次比较:");
                    Stopwatch watch = new Stopwatch();
                    watch.Start();
                    var result = list.OrderBy(single => single).ToList();
                    watch.Stop();
                    Console.WriteLine("\n快速排序耗费时间:" + watch.ElapsedMilliseconds);
                    Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                    watch.Start();
                    result = DirecteSort(list);
                    watch.Stop();
                    Console.WriteLine("快速选择排序耗费时间:" + watch.ElapsedMilliseconds);
                    Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                    Console.WriteLine("----------------------------------------------------------");
                }
                Console.Read();
            }
    
            static List DirecteSort(List list)
            {
                for (int i = 0; i < list.Count-1; i++)
                {
                    for (int j = i+1; j  list[j])
                        {
                            list[i] = list[i] ^ list[j];
                            list[j] = list[i] ^ list[j];
                            list[i] = list[i] ^ list[j];
                        }
                    }
                }
                return list;
            }
        }
    }

    image

  • 相关阅读:
    C#编程读写文本
    机械手臂四轴
    机械手臂姿态
    Val编程任务编程
    Val编程系统架构
    GeoGebra一种开源平面画图软件的使用
    Val编程速度因子
    Val编程val系列编程思想
    怎么让 dom4j 添加的节点 在最前面 而不是最后面
    LayoutInflater的inflate函数用法详解
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2291274.html
Copyright © 2011-2022 走看看