算法
VERON
这个作者很懒,什么都没留下…
展开
-
c语言----排序之非递归排序
普通查找和排序查找的性能差别很大。作为一个100万的数据,如果使用普通的查找方法,那么每一个数据查找平均下来就要几十万次,那么二分法的查找呢,20多次就可以搞定。这中间的差别是非常明显的。既然排序有这么好的效果,下面就对对排序算做一个总结。 排序可以分为两种:一种是非递归排序,它主要按照非递归的方法对数据进行排序,也就是说主要数据的移位和循环来完成;另外一种就是递归方法,我们在排列当前数转载 2012-01-29 18:32:36 · 96 阅读 · 0 评论 -
单链表的实现
#include #include typedef struct node //定义链表 { int data; struct node *next; }snode; snode* creat() //创建链表的函数 { snode *head, *p, *q; head = (snode *)malloc(sizeof(snode)); q = hea转载 2012-02-28 20:43:21 · 268 阅读 · 0 评论 -
【排序】排序算法之---选择排序
所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如下五种: 1、插入排序(直接插入排序、希尔排序) 2、交换排序(冒泡排序、快速排序) 3、选择排序(直接选择排序、堆排序) 4、归并排序; 5、桶排序(桶排序,基数排序); ---------------------------------------转载 2012-02-01 15:44:59 · 296 阅读 · 0 评论 -
【排序】排序算法之---交换排序
所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如下五种: 1、插入排序(直接插入排序、希尔排序); 2、交换排序(冒泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、桶排序(桶排序,基数排序); ------------------------------------转载 2012-02-01 15:43:16 · 272 阅读 · 0 评论 -
【排序】排序算法之---插入排序
所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如下五种: 1、插入排序(直接插入排序、希尔排序); 2、交换排序(冒泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、桶排序(桶排序,基数排序); --------------------------------------------转载 2012-02-01 15:42:44 · 327 阅读 · 0 评论 -
面试总结1
转载自:http://blog.csdn.net/v_july_v/article/details/68702511.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如转载 2012-08-16 23:17:22 · 328 阅读 · 0 评论 -
面试总结2
转载自:http://blog.csdn.net/v_JULY_v/article/details/6126406 第12题 题目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字 以及条件判断语句(A?B:C)。 //July、2010/10/19 ----------------- 循环只是让相同的代码执行n遍而已,我们完转载 2012-08-16 23:44:39 · 459 阅读 · 0 评论 -
面试总结3
strcpy和memcpy的区别 strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, const char* src); memcpy提供了一般内存的复制。即memcp转载 2012-08-28 20:21:10 · 402 阅读 · 0 评论 -
全排列实现(转载)
字典序排列把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次计算当前排列的下一个字典序排列。对当前排列从后向前扫描,找到一对为升序的相邻元素,记为i和j(i template void CalcAllPermutation(T perm[], int num) { if (num < 1) return; w转载 2012-08-08 23:29:13 · 469 阅读 · 0 评论 -
双链表的创建、插入、删除
#includestdio.h> #includemalloc.h> typedef struct node //定义双链表 { int data; struct node *prior; struct node *next; }snode; snode *creat() //创建双链表 { snode *head, *p, *q;转载 2012-02-28 15:00:09 · 617 阅读 · 0 评论 -
双链表的实现
双链表 1、双向链表(Double Linked List) 双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。 注意: ①双链表由头指针head惟一确定的。 ②带头结点的双链表的某些运算变得方便。 ③将头结点和尾结点链接起来,为双(向)循环链表。 2、双转载 2012-02-22 14:41:59 · 394 阅读 · 0 评论 -
排序---基本分类和算法分析
排序方法的分类 1.按是否涉及数据的内、外存交换分 在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内部排序(简称内排序);反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序。 注意: ① 内排序适用于记录个数不很多的小文件 ② 外排序则适用于记录个数太多,不能一次将其全部记录放人内存的大文件。 2转载 2012-01-30 18:55:00 · 113 阅读 · 0 评论 -
【排序】排序算法之---归并排序
所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如下五种: 1、插入排序(直接插入排序、希尔排序) 2、交换排序(冒泡排序、快速排序) 3、选择排序(直接选择排序、堆排序) 4、归并排序; 5、分配排序(桶排序,基数排序); ------------------------------------转载 2012-02-01 15:46:23 · 378 阅读 · 0 评论 -
各种内部排序方法的比较和选择
按平均时间将排序分为四类: (1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序; (3)O(n1+£)阶排序 £是介于0和1之间的常数,即0 (4)线性阶(O(n))排序 如桶、箱和基数排序。 各种排序方法比较转载 2012-02-01 15:49:02 · 232 阅读 · 0 评论 -
从零开始学算法:十种排序算法介绍(上)
转载自matrix67.com 我把这篇文章称之为“从零开始学算法”,因为排序算法是最基础的算法,介绍算法时从各种排序算法入手是最好不过的了。 给出n个数,怎样将它们从小到大排序?下面一口气讲三种常用的算法,它们是最简单的、最显然的、最容易想到的。选择排序(Selection Sort)是说,每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去转载 2012-02-23 16:42:29 · 291 阅读 · 0 评论 -
循环链表应用---约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 #include #include typedef struct Node { int num; struct Node *next; }LinkL转载 2012-02-28 16:46:52 · 430 阅读 · 0 评论