新手小白 C语言十大经典算法入门必看理论基础

算法:

解决问题的方法和步骤(数据结构所具备的功能)。
特征:有穷性、确切性、输入项、输出项、可行性
评定:
    时间复杂度:随着输入项的变化,算法运算的次数,一般采用大O表示法。
        O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(2^n)<O(n!)
    空间复杂度:随着输入项的变化,算法所需要内存的变量,一般采用大O表示法。
        O(1)<O(n)<O(2n)
    正确性
    可读性
    健壮性

排序算法:

**冒泡排序:**
    特点:对数据的有序性敏感,一旦排序完成就能停止。
    时间复杂度:
        最优:O(n) 最差:O(n^2)
**选择排序:**
    特点:交换数据的次数比其它算法少。
    时间复杂度:O(n^2)
**插入排序:**
    特点:把数据分为两部分,一部分有序,一部分无序,把无序中的数据逐个往有序部分中插入,适合向已经排序好的数据中添加新的数据。
    时间复试度:O(n^2)
**希尔排序:**
    特点:是插入排序的改进版,通过缩减增量来提高排序速度的一种方法。
    时间复杂度:O(n^1.3) O(n^2)
**快速排序:**
    特点:先确定一个标杆,先从左边找比标杆大的数据与标杆交换,再从右边找比标杆小的数据与标杆交换,达到标杆左边的数据都比它小,右边的都比它大,达到大致有序的效果,然后再使用同样的方法排序标杆左边的数据,然后再排序标杆右边的数据,直到排序完成。
    时间复杂度:O(nlogn),O(n^2)
**堆排序:**
    特点:把待排序的数据看作一个完全二叉树,先构建成在根堆或小根堆,然后把堆顶与最后一个数据交换,再把待排序的数据-1,然后再调整堆,直到排序完成。
    时间复杂度:O(nlogn)
**归并排序:**把待排序的数据分隔成一个个子结构,然后把这些子结构按从小到大的顺序复制到临时空间,复制完成后再从临时空间拷贝到原空间,这样就排序完成,该算法使用复制过程代替交换过程,以此提高排序速度,是一种典型的使用空间换取时间的算法。
    时间复杂度:O(nlogn)
**计数排序:**把待排序的数据中的最大值最小值,然后创建哈希表,统计每个数据出现的次数,然后按从小到大的顺序访问哈希表,当哈希表中的数据不为零说明数据现为待排序的数据,然后把它存放到数组中。
    缺点:创建哈希表时需要额外的内存,最大值与最小值不确定,可能效率非常低,只适合对数据之间差值不大、重复性高的数据进行排序。
    时间复杂度:O(n+k)

**桶排序:**先按照数据的规模创建桶,然后再把数据分散到桶中,然后调用其它排序算法把桶进行排序,然后再把桶中的数据合并到数组中,该算法是通过降低待排序数据的规模来提高排序速度。
    缺点:如何分桶,桶定义多大,这些都需要对有数据有大致的了解。
    时间复杂度:O(n+k)

**基数排序:**创建10个队列,把待排序的数据逐个识别个位数据,然后根据识别的结果把数据存储到10个队列中,然后从队列出依次弹出,然后是十位、百位...重复这一过程,直到所有数据的最高位为0。
    缺点:只适合排序正整数据。
    时间复杂度:O(n+k)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言经典算法。 第一篇 基础与提高  实例1利用库函数编写基本显示程序  实例2变量属性  实例3运算符与类型  实例4关于程序结构  实例5显示函数曲线图  实例6二分法选代的应用  实例7多变的立方体  实例8一维整型数组应用(1)  实例9一维整型数组应用(2)  实例10一维整型数组应用(3)  实例11一维整型数组应用(4)  实例12二维数组应用(1)——显示杨辉三角  实例13二维数组应用(2)——魔方阵  实例14字符数组应用(1)——逻辑判断  实例15字符数组应用(2)——数据模拟  实例16二维数组应用——字符比较   实例17利用指针进行数据处理  实例18指针与字符串  实例19利用指针处理二维数组  实例20一级指针  实例21利用指针传递参数值  实例22结构体的应用  实例23链表的应用(1)  实例24链表的应用(2)  实例25链表的应用(3)  实例26共用体的应用  实例27枚举类型应用  实例28位运算  买例29义件加密  实例30文件的按记录随机读写 第二篇 图形与多媒体  实例31改变文字背景色  实例32及本颜色设置  实例33制作表格  实例34制作多样的椭圆  实例35美丽的透视图形  实例36错位窗口  实例37能移动的矩形  实例38多变的填充矩形  实例39黄黑相间的矩形与圆  实例40六叶图案  实例41特殊图案  实例42国际象棋棋盘  实例43制作楼梯  实例44使用线类型函数设置多个汉字  实例45彩色群点  实例46饼图  买例47产品折线图  实例48直方图  实例49变大变色的拒形与国  实例50多变的填充多边形  实例51流星球  实例52小球动态碰撞  买倒53多,曲线  实例54多变的圆与环  实例55优美的球体  实例56运动的小车  实例57统计动画消失次数  实例58运行的时钟  实例59直升飞机  实例60演绎“生命游戏”  实例61猜猜看  买例62艺术清屏  买倒63制作火焰  实例64动态绘制256条不同颜色的直线  实例65红绿蓝三原色渐变 第三篇 综合小程序  实例66两个矩阵相乘  实例67艺术钟  实例68家庭财务管理小程序  实例69用系统时间实现随机数  实例70闪动的多彩圆  实例71检查系统有无鼠标  实例72圆形光盘与矩形  实例73动态渐变图案  实例74往返两地间的小车  实例75飘扬的红旗  实例76显示蓝天白云图形  实例77百叶窗 第四篇 计算机等级考试上机试题(二级) 第五篇 计算机等级考试上机试题(三级)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值