数据结构和算法
xx说就叫这个名字
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法的比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n);3.辅助空间的比较 线形排序、二路归并排序的辅助转载 2010-04-25 22:07:00 · 621 阅读 · 0 评论 -
随笔(二进制字符串中1的个数)
<br />论坛上看到这个问题,结合了大家的智慧,写下这段代码,留给以后查阅!<br />/* * ===================================================================================== * * Filename: one_Number_Of_Bit_String.c * * Description: * 给定一个二进制的字符串“01010101001000101111111原创 2010-09-30 21:30:00 · 1064 阅读 · 0 评论 -
简单的后缀数组
<br />/* 后缀数组实现查找最大子字符串 * 时间复杂度O(nlogn),时间花费 * 主要是在后缀数组的排序上面 * 使用qsort库函数排序,内部实现 * 应该是快排的改进算法 * */#include <stdio.h>#include <stdlib.h>#include <string.h>#define NMAX 1024char str[ NMAX ]; /* 存储字符串 */char *pt[ NMAX ]; /* 存储顺序原创 2010-09-21 15:04:00 · 689 阅读 · 0 评论 -
线性算法解决数组最大和
<br />//问题描述:有一个数组假如A[10] = {45, 23, -67, 12, -33, -54, //23, 71, -10, 18 },现在要求出A数组中从下标i到j的子数组和最大值,//其中i,j都在[0, 10)之间,i <= j;//如上所述,A数组中的最大和应该是102,下标i = 6, j = 9;//使用线性扫描的算法,时间复杂度为O(n);#include <stdio.h>#include <stdlib.h>#include <string.h>原创 2010-09-20 17:44:00 · 1208 阅读 · 0 评论 -
判断位&设置位
<br />/* ******************************** * 将某一个char中的第local位置为1 * *********************************/int SetBit(unsigned char *Des, int local){ const static int markbuf[ ] = { 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80 }; if ( local > 8 ) {原创 2010-08-21 15:14:00 · 982 阅读 · 0 评论 -
KMP之next
<br />看了KMP的模式匹配算法,开始理解起来还是有点难,慢慢来,还在看.....<br /> <br />KMP算法中比较难的自己感觉是那个求next函数,看了下,分析了下,做个阶段性总结:<br /> <br />===============对get_next函数的对比思考===============================<br />void get_next(const char * T, int *next) { int i, j; /* 书上的i=1,因为书上的模式字原创 2010-08-20 10:59:00 · 851 阅读 · 0 评论 -
查找两字符串的最大公共子串
<br />===============================find_common_sub_string==============================<br />运用KMP算法实现查找两字符串的最大公共子串,KMP算法省略掉,在其他几篇日记里面都有!<br />void find_common_sub_string(const char *Des, const char *Src) { int ilen, inum; int flag = 0; /* 标示是否查原创 2010-08-21 00:47:00 · 2349 阅读 · 0 评论 -
1000阶乘
=================1000!字符实现============================================#include #define N 10000int main(int argc, char **argv) { char data[ N ] = { '1', '0'}; int digit, i, index, carry; int tmp; for ( i = 2, digit = 0; i原创 2010-08-19 17:20:00 · 776 阅读 · 0 评论 -
查找字符串出现次数
=======================StrnTimes字符串出现次数================================int StrnTimes(const char *strDes, const char *strSrc) { int i, j; const char *pDes = strDes, *pSrc = strSrc; int lenSrc = 0, lenDes = 0; int times = 0; if ( strDes == NULL |原创 2010-08-19 17:06:00 · 773 阅读 · 0 评论 -
字符串查找strstr个人实现
=========================strstr个人实现=============================================char *Strstr(char *strSrc, const char *strDes) { int i, j; int lenSrc = 0, lenDes = 0; const char *pSrc = strSrc, *pDes = strDes; if ( strSrc == NULL || strDes =原创 2010-08-19 11:58:00 · 802 阅读 · 0 评论 -
排序算法
/* **************************************** * 快速排序递归实现版本:选定一个数,一般选 * low下标数据,然后将low与high下标之间的数据 * 同low数据比较,将其分为大于low的和不大于low * 的两部分,分别存放在low的前面和后面; 接着 * 又将low前后数据重复之前的操作,直到low不小于high * ****************************************/void QuickSort(S原创 2010-08-18 13:55:00 · 801 阅读 · 0 评论 -
二叉树
<br />《编程之美》上面的重建二叉树:<br />/* * ===================================================================================== * * Filename: reBuild.c * * Description: 根据前序及中序结果,重建树的根节点 * * Version: 1.0 * Created: 2010年09月原创 2010-09-30 19:56:00 · 652 阅读 · 0 评论
分享