自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (4)
  • 收藏
  • 关注

原创 快速排序的三路划分法

快速排序中带有大量重复关键字的时候,简单的由一个划分元素将元素分成两个子文件的算法效率低。很自然地想到了“荷兰国旗问题”,采用三路划分,将与划分元素相等的元素又区分出来,减少不必要的递归程序。在快速排序中,当两个运动的指针遇到与划分元素相等的元素时候,将该元素数组的两端:左指针遇到的交换到数组的左端,右指针遇到的交换到数组的右端。需要增加两个指针,指向数组左右端可以存储相等元素的位置。

2015-06-10 16:15:48 1291

原创 快速排序的三者取中划分

使用一个尽可能在文件中间划分的元素。一种选择划分元素的方法是从文件中取出三个元素,使用三个元素的中间元素作为划分元素。取数组中的左边元素、中间元素和右边元素,对这三个元素排序。以中间值为划分元素!void quicksort_smallFile_median(Item a[], int l, int r) //小文件排序采用插入排序方法,三者取中{ int i; if(r-l <=

2015-06-10 16:15:18 3731 2

原创 快速排序中小文件采用插入排序

减少小文件在递归调用中的进栈和出栈的时间可以提高快速排序的效率,非递归调用中同样存在小文件排序时候的进栈出栈操作。一种显然的的方法就是在递归调用之前,检测是否为小文件排序,如果是的话,才用插入排序方法进行小文件排序。void quicksort_smallFile(Item a[], int l, int r) //小文件排序采用插入排序方法{ int i; if(r-l <= M)

2015-06-10 16:14:41 440

原创 快速排序的非递归实现

快速排序的非递归实现使用了一个显示的下推栈使用向栈中压入参数和过程调用/退出不断地从栈中弹出参数来替代递归调用。把两个子文件的较大者压入栈中。快速排序的非递归实现#include #include #include "seqstack.h"typedef int Item;#define exch(A, B) {Item t = A; A = B; B = t;}

2015-06-10 16:14:18 427

原创 队列(三):链式存储队列

链式存储队列的存储结构typedef int datatype;typedef struct link_node{ datatype info; struct link_node *next;}node;typedef struct{ node *front, *rear;}queue;基本运算实现queue *init(); //建立一个空的链式队列int empty(q

2015-06-10 16:01:23 388

原创 队列(一)

队列的定义和基本运算顺序队列循环队列链式队列

2015-06-10 15:51:52 400

原创 栈(三):链式栈

链式栈的存储结构typedef int datatype;typedef struct link_node{ datatype info; struct link_node *next; //指向下一个结点的link_node指针}node;基本运算实现node *init(); //建立一个空的链式栈int empty(node *top); //判断链式栈是否为空data

2015-06-10 15:45:33 514

原创 栈(一)

栈的知识点总结:栈有根据存储结构分为顺序栈和链栈顺序栈的存储结构链栈的存储结构

2015-06-10 15:36:13 369

原创 线性表学习归纳总结六:不带头结点的双链表

双链表与单链表的区别:双链表有两个指针域,存储结构上需要耗费更多的空间。双链表的插入和删除操作需要修改的指针更多,但可以方便的得到结点的前驱结点。双链表的存储结构typedef int datatype;typedef struct dlink_node{ datatype info; struct dlink_node *llink, *rlink;}dnod

2015-06-10 15:33:39 625

原创 线性表学习归纳总结五:不带头结点的循环链表

循环链表与单链表的区别在于,最后一个结点的指针域。不带头结点循环链表最后一个结点的指针域指向链表的第一个结点,带头结点的话,最后一个结点的指针域指向头结点。 而单链表中,最后一个结点的指针域为null。基本运算中的区别在于:链表扫描时候的终点条件;以及在插入和删除操作时候, 需要注意是否需要修改最后一个结点的指针域。获得循环链表的最后一个结点的存储地址n

2015-06-10 15:28:59 2154

原创 线性表学习归纳总结四:线性表链式存储 带头结点

线性表的链式存储,带有头结点的链表可以减少对特殊情况的判断处理,不需要再对空表进行特殊处理。在一般单链表中,第一个结点有head指示,而在带有头结点的单链表中,head指示的是所谓的头结点,它不是数据结构中的实际结点,第一个实际结点是head->next指示的。链表的存储结构和一般单链表没有区别typedef int datatype;typedef struct

2015-06-10 15:13:36 621

原创 线性表学习归纳总结三:线性表链式存储 不带头结点

线性表的链式存储,需要考虑链表是否带有头指针,是不是循环链表,是不是双链表带有头结点的单链表循环链表双链表不带有头结点的单链表,头指针head直接指向第一个结点,带有头结点的单链表,head指向头结点,头结点的存储结构和后续结点一样,但只使用了头结点的next指针域。链表存储结构

2015-06-10 15:10:02 587

原创 选择排序

选择排序的介绍选择排序(Selection sort)是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的说明 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

2015-06-02 22:11:38 418

原创 快速排序

分治法的基本思想分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。快速排序介绍快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。它的基本思想是:选择一个基准数,通过一趟排序将要

2015-06-02 21:41:57 513

原创 冒泡排序

交换排序介绍交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。冒泡排序介绍冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者

2015-06-02 21:25:26 486

原创 希尔排序

参考:希尔排序、希尔排序学习希尔排序介绍希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后

2015-06-02 13:14:23 444

原创 直接插入排序

参考:直接插入排序插入排序总结排序算法中的直接插入排序。内容包括:插入排序介绍直接插入排序介绍直接插入排序图文说明直接插入排序的时间复杂度和稳定性分析直接插入排序的实现直接插入排序的分析与改进插入排序介绍插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

2015-06-02 11:28:34 519

原创 二叉树的实现

参考:二叉查找树(一)之 图文解析 和 C语言的实现目录二叉树的存储结构定义前序遍历二叉树中序遍历二叉树后序遍历二叉树二叉树的创建:利用前序遍历的方法查找二叉树中值为x的结点地址统计二叉树中结点的个数判断二叉树是否等价求二叉树的高度以上函数实现都是利用树的递归定义!二叉树的存储结构定义typedef int datatype;typedef str

2015-06-01 16:43:58 399

数据结构线性表学习笔记总结

数据结构线性表学习笔记总结 线性表-顺序存储-链式存储-循环链表-双链表 知识点总结-代码实现

2015-05-29

跟我一起写makefile

跟我一起写makefile

2015-04-29

C程序设计语言(第2版·新版)习题解答

答案代码可以直接copy使用,非常清晰不用担心,不是PDF,不是word,切换题时非常方便

2013-04-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除