算法速成(一)七大经典排序

算法就好比程序开发中的利剑,所到之处,刀起头落。

针对现实中的排序问题,算法有七 把利剑可以助你马道成功。

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Diagnostics;
 using System.Threading;   

 namespace BubbleSort
 {
     public 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();
                 watch.Stop();
                 Console.WriteLine("\n快速排序耗费时间:" + watch.ElapsedMilliseconds);
                 Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                 watch.Start();
                 result = BubbleSort(list);
                 watch.Stop();
                 Console.WriteLine("\n冒泡排序耗费时间:" + watch.ElapsedMilliseconds);
                 Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
             }
         }   

         //冒泡排序算法
         static List<int> BubbleSort(List<int> list)
         {
             int temp;
             //第一层循环: 表明要比较的次数,比如list.count个数,肯定要比较count-1次
             for (int i = 0; i < list.Count - 1; i++)
             {
                 //list.count-1:取数据最后一个数下标,
 //j>i: 从后往前的的下标一定大于从前往后的下标,否则就超越了。
                 for (int j = list.Count - 1; j > i; j--)
                 {
                     //如果前面一个数大于后面一个数则交换
                     if (list[j - 1] > list[j])
                     {
                         temp = list[j - 1];
                         list[j - 1] = list[j];
                         list[j] = temp;
                     }
                 }
             }
             return list;
         }
     }
 }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索list
, 排序
, using
, system
, 个数
下标
七大排序算法、经典排序算法、java经典排序算法、c语言8大经典排序算法、c语言经典排序算法,以便于您获取更多的相关知识。

时间: 2024-12-08 10:55:32

算法速成(一)七大经典排序的相关文章

算法速成(二)七大经典排序之选择排序

今天说的是选择排序,包括"直接选择排序"和"堆排序". 话说上次"冒泡排序"被快 排虐了,而且"快排"赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下. 这不今天 就来了两兄弟找快排算账. 1.直接选择排序: 先上图: 说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小 排个序, 那小孩首先会在这么多玩具中找到最小的放在第一位,然后找到次小的放在第二位, 以此类推...... ,小 孩子多聪明

算法速成(三)七大经典排序之直接插入排序、希尔排序和归并排序

直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一 手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的. 最左一张牌是3,第二张牌是5,第三张牌又是3, 赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去, 第五张牌又是3, 狂喜,哈哈,一门炮就这样产生了. 怎么样,生活中处处都是算法,早已经融入我们的生活和 血液. 下面就上图说明: 看这张图不知道大家可否理解了,在插入排

算法系列15天速成——第一天 七大经典排序【上】

今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落.   针对现实中的排序问题,算法有七把利剑可以助你马道成功.   首先排序分为四种:        交换排序: 包括冒泡排序,快速排序.       选择排序: 包括直接选择排序,堆排序.       插入排序: 包括直接插入排序,希尔排序.       合并排序: 合并排序.   那么今天我们讲的就是交换排序,我们都知道,C#类库提供的排序是快排,为了让今天玩的有意思点, 我们设计算法来跟类库提供的快排较量较量.争取K

算法系列15天速成——第三天 七大经典排序【下】

今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序.   直接插入排序:        这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后,    扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的.        最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去,    第五张牌又是3,狂喜,哈哈,一门炮就这样产生了.      

算法系列15天速成 第一天 七大经典排序【上】_相关技巧

针对现实中的排序问题,算法有七把利剑可以助你马道成功. 首先排序分为四种:       交换排序: 包括冒泡排序,快速排序.      选择排序: 包括直接选择排序,堆排序.      插入排序: 包括直接插入排序,希尔排序.      合并排序: 合并排序. 那么今天我们讲的就是交换排序,我们都知道,C#类库提供的排序是快排,为了让今天玩的有意思点,我们设计算法来跟类库提供的快排较量较量.争取KO对手. 冒泡排序: 首先我们自己来设计一下"冒泡排序",这种排序很现实的例子就是:我抓一

算法系列15天速成 第三天 七大经典排序【下】_相关技巧

直接插入排序:        这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后,    扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的.        最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去,    第五张牌又是3,狂喜,哈哈,一门炮就这样产生了.      怎么样,生活中处处都是算法,早已经融入我们的生活和血液.       

算法系列15天速成——第二天 七大经典排序【中】

首先感谢朋友们对第一篇文章的鼎力支持,感动中.......    今天说的是选择排序,包括"直接选择排序"和"堆排序".   话说上次"冒泡排序"被快排虐了,而且"快排"赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下. 这不今天就来了两兄弟找快排算账.   1.直接选择排序:  先上图:   说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序, 那小孩首先会在这么多玩具中找到最小的放在

算法系列15天速成 第二天 七大经典排序【中】_相关技巧

首先感谢朋友们对第一篇文章的鼎力支持,感动中.......    今天说的是选择排序,包括"直接选择排序"和"堆排序". 话说上次"冒泡排序"被快排虐了,而且"快排"赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下. 这不今天就来了两兄弟找快排算账. 1.直接选择排序:  先上图: 说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序, 那小孩首先会在这么多玩具中找到最小的放在第一位,然后

算法速成(四)五大经典查找之线性查找

在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄....... 对的 这些都是查找. 在我们的算法中,有一种叫做线性查找. 分为:顺序查找. 折 半查找. 查找有两种形态: 分为:破坏性查找,   比如有一群mm,我猜她们的 年龄,第一位猜到了是23+,此时这位mm已经从我脑海里面的mmlist中remove掉了. 哥不找23+ 的,所以此种查找破坏了原来的结构. 非破坏性查找, 这种就反之了,不破坏结构. 顺序查找: 这种非常简单,就是过一下数组,一个一个的比,