zoukankan      html  css  js  c++  java
  • 选择排序——算法系列

    选择排序:

    思想:选择排序的思想也非常简单,就是从一堆数中选出最小值,然后和顶部元素互换,之后再用同样的方法排序剩余的数,最终得到排序的结果。

    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Net;
    using System.Threading;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 1; i <= 5; i++)
                {
                    List<int> list = new List<int>();
                    //插入2k个随机数到数组中
                    for (int j = 0; j < 2000; j++)
                    {
                        Thread.Sleep(1);
                        list.Add(new Random((int)DateTime.Now.Ticks).Next(0, 100000));
                    }
                    Console.WriteLine("\n第" + i + "次比较:");
                    Stopwatch watch = new Stopwatch();
                    watch.Start();
                    var result = list.OrderBy(single => single).ToList();//这里这个single=>single不懂
                    watch.Stop();
                    Console.WriteLine("\n系统的快速排序耗费时间:" + watch.ElapsedMilliseconds);
                    Console.WriteLine("输出前是十个数:"+string.Join(",",result.Take(10).ToList()));
                    watch.Start();
                    result = SelectionSort(list);
                    watch.Stop();
                    Console.WriteLine("\n选择排序耗费时间:" + watch.ElapsedMilliseconds);
                    Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                    
                }
                Console.ReadLine();
            }
            //快速排序算法
            static List<int> SelectionSort(List<int> list)
            {
                for (int i = 0; i < list.Count-1; i++)
                {
                    int tempIndex = i;
                    for (int j = i + 1; j < list.Count; j++)
                    {
                        if (list[tempIndex] > list[j])
                            tempIndex = j;
                    }
                    int temp = list[i];
                    list[i] = list[tempIndex];
                    list[tempIndex] = temp;
                }
                return list;
            }
        }
    }

    总结:选择排序也是比较容易理解的,非常直观。但是性能不是很好。

  • 相关阅读:
    embed 与 object
    通道
    Silverlight 插件中的FindName方法使用
    RenderTransformOrigin 的作用
    Photoshop工具与绘图
    Silverlight动画
    VS2005 数据连接提示:该项不适于在指定状态下使用
    IIS6注册.net4.0
    .NET中的动态编译
    DevExpress换肤
  • 原文地址:https://www.cnblogs.com/7ants/p/2954350.html
Copyright © 2011-2022 走看看