c/c++
c/c++,排序算法归纳
Tim.
A ship in port is safe, but that's not what ships are built for.
展开
-
c 语言数组基本操作(查找,修改,删除,插入)
写在前面:自己写了一边,不够精简,又借鉴了别人的例子,最后得出这个版本。恐怕既不是最简单的,也不是最精妙的,但是我目前能实现的比较清晰简洁的一版。还是先把‘‘见怪不怪’’给大牛写在前面。。。好了开始吧~第一个查找:这个没什么好说的就按值查找并返回下标就看吧~int ArrayFindByValue(int* p, int len, int value, int begin){...原创 2018-11-30 18:18:10 · 5590 阅读 · 1 评论 -
排序算法归纳(c语言) ⑥归并排序
归并排序归并,顾名思义是归一,合并的意思。具体的做法大体是:将两个有序子段归并为一个长段,重复这一过程,最终就能得到一个有序序列了。所以,纵观整个对并过程,就像是一颗完全二叉树。由二叉树的深度可以得出,整个归并排序的执行次数是以2为底n的对数。自然,这是一个对数级的操作。扫描整个整个序列需要耗时O(n),所以,对并排序是一个时间复杂度为O(nlogn)。归并中因为开取了辅助空间,空间复杂...原创 2019-05-31 21:21:27 · 217 阅读 · 0 评论 -
排序算法归纳(c语言) ④希尔排序
希尔排序ShellSort,排序算法史上的里程碑。原创 2019-04-22 22:14:15 · 243 阅读 · 0 评论 -
排序算法归纳(c语言) ⑤堆排序
堆排序HeapSort,这是相当常用的一种排序算法。原因是它的时间复杂度相当稳定,且相当高效。无论是最好情况还是最坏情况,时间复杂度都能较稳定地保持在O(nlogn)。...原创 2019-04-26 20:07:11 · 182 阅读 · 0 评论 -
排序算法归纳(c语言) ③插入排序
插入排序插入排序的关键在于:将后来的无序元素,插入到前面的有序之中。可是我们拿到手的往往是一组纯无序的元素啊,哪有什么“前面的有序元素”呢?当然有,要知道,任意单一元素是自然有序的。也就是说我们可以把第一个元素看成前端的有序列,将后续元素插入到这个有序列之中。待排序数据依然存放于顺序表中。数据存放没有从0开始,而是选择从1开始。代码参考于《大话数据结构》。...原创 2019-04-22 10:39:03 · 183 阅读 · 0 评论 -
排序算法归纳(c语言) ②选择排序
选择排序系列之第二篇,选择排序。选择排序相对于冒泡排序是较少做交换的。因为它在进行一次外层循环后,只挑选最优的一个元素进行交换。这也就省去了一些交换的时间复杂度。所以,从这个角度讲,选择排序的效率因该会高于冒泡排序。待排序数据依然存放于顺序表中。数据存放没有从0开始,而是选择从1开始。代码参考于《大话数据结构》。初始设定#include<stdio.h>#define ...原创 2019-04-17 12:15:23 · 215 阅读 · 0 评论 -
排序算法归纳(c语言)①冒泡排序
冒泡排序这是最早学到的一个排序算法,它的原理比较简单。就像它的名字一样,很形象,让大数(或小数)“冒出头”。本代码中,待排序的数据放在一个顺序表中。数据存放没有从0开始,而是选择从1开始,data[0]则可做他用。这里一共列出三个,由简单到复杂的冒泡排序代码。代码参考于《大话数据结构》。初始设定#include<stdio.h>typedef int ElemType;...原创 2019-04-16 23:14:47 · 325 阅读 · 0 评论 -
c语言实现的单链表及一些基本操作
又是一篇学习记录。单链表算是很经典的一种数据结构了,记得数据结构课本开篇就讲的它。可能是因为比较简单吧。结构体代码如下:typedef struct _NODE{ int value; struct _NODE* next;}NODE, *PNODE;原创 2018-12-11 20:16:56 · 435 阅读 · 0 评论 -
C语言EasyX_2018中的putimage(x, y, w, h, img, x1, y1)函数
putimage(x, y, w, h, img, x1, y1);函数一共有六个参数。以下解释来自EasyX_2018的帮助文件:这个函数的几个重载用于在当前设备上绘制指定图像。// 绘制图像void putimage( int dstX, // 绘制位置的 x 坐标 int dstY, // 绘制位置的 y 坐标 ...原创 2018-11-23 13:03:53 · 7794 阅读 · 1 评论 -
排序算法归纳(c语言) ⑦快速排序
快速排序Quick Sort,被誉为20世纪十大算法之一,真正的排序大佬登场!快速排序可看作冒泡排序的升级,它们同属于交换排序类。只不过快排增大了记录的比较和移动距离,从而减少了比较和交换次数。快速排序的基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序的目的。在最优情况下快排的时间复杂度为O...原创 2019-06-22 16:58:44 · 476 阅读 · 0 评论