• 2.3 C#语法的学习(三) && 排序


    今天讲排序
    先讲C#已经实现好的,可以直接使用的排序方式。毕竟我们的目标并不是学习怎么给数字排序不是。
    然后我们再以兴趣班的打开方式来看看手动写排序是怎样的体验。

    今天的问题是:任意输入三个整数,然后按从小到大的顺序输出。

    C#排序方法get√

    我们现在不知道C#有哪些排序的方法,我们应该用什么关键词去查?无外乎,“C# 排序”、“.net 排序”。
    搜索“C# 排序”,结果如下:

    我们得到了一些新的关键词“Sort”、“SortList”、“排序比较”,而“实现”、“算法”这种关键词,应该被过滤掉。同时,我们可以参考右边的“相关搜索”(或者谷歌搜索中的自动填充功能),在搜索结果不尽如人意的时候,通过多次、准确定位关键词,得到我们想要的答案。
    接下来,我们将搜索词条改为“C# 排序比较”,可以看到,基本上就是我们想要的内容了。

    而我们也看到了另一个关键词“List”,我们可以大胆猜测,有很多、很多种存储一组数据的方法(SortList、List),也有很多种排序的方法。
    剩下的问题,就是看博客,学习、理解、使用。感兴趣的同学可以自己动手做一些大数据量、不同数据的实验,来测试不同用法的功能。
    不要盲目的相信博客写的内容,初学的时候没有辨识的能力的话,可以多看几篇同类型的文章,多动手去实验,去确认。博客毕竟不比读书,书尚且可能有疏误,更不用说博客了。
    所以有官方资料的时候,以官方资料优先。有些问题可能阅读书籍,结合博客效果更佳。
    我在这里就简单写一个排序的功能,贴到示例代码里面。

    排序算法

    排序问题是计算机的一个常见问题,直接搜索“排序算法”,就可以得到很多种算法。大学学习C语言也要教,其中比较常见的有冒泡排序、选择排序、二分插入排序、快速排序等等,不同的方法又有不同的应用场景和时间复杂度。
    个人认为,在不研究算法,不考试的情况下,深入理解排序算法的意义不大。重点应该放在时间复杂度这个概念的理解,以及学习如何把这些算法通过代码实现上。
    时间复杂度,还有它的小伙伴空间复杂度在衡量程序的性能上很有意义。搜索“时间复杂度”、“空间复杂度”、“时间复杂度 空间复杂度”,进行学习。
    简单理解,时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间,over。

    延展

    今天的问题,依然可以像累计求和的问题一样扩展出下面的功能:
    1.从三个数字排序变成任意n个数字排序;
    2.从整数排序变成小数排序;
    3.提供排序方式的选择,“从小到大”还是“从大到小”;
    4.用控制台太麻烦了,很丑,提供一个UI界面是不是更好;
    (1)如果使用UI,多个数字怎样输入、怎样交互会比较合理
    (2)怎样去验证输入的内容,确保一定是数字
    (3)如果用户输入出错,应该怎么提示
    (4)怎样输出结果
    .........
    可以看到,要完成功能是很简单的,要使程序变得美观、交互友好、逻辑正确并且健壮,却不是一件容易的事情。
    后面讲到桌面程序的时候,我们可以拿这个例子来写写。

  • 相关阅读:
    c语言-何为编程?
    c语言-注释
    【转】使用DirectUI技术实现QQ界面
    c语言-error C2440: “static_cast”: 无法从“UINT (__thiscall CHyperLink::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
    系统分析师【转】
    c语言-经验之谈
    开源托管站点大全
    c语言-扑克牌小魔术
    c语言-猜数字游戏
    世界语简介
  • 原文地址:https://www.cnblogs.com/Lulus/p/12343029.html
Copyright © 2020-2023  润新知