摘要: 插入排序基本思想:将需要排序的数据分成有序区与无序区,默认的第一个有序区是第一个元素。然后依次排序不断扩大有序区,缩小无序区。通过将无序区第一个数据与有序区内数据比较,找到他的位置,然后将有序数据向后移动,将那个数据放到有序区的相应位置就可以了。知道比较到无序区的最后一个数据结束。但是由于每次比较需要移动大块数据,所以需要使用memmove来操作。View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef int DataType; 5 void insert_snort(DataType data[], 阅读全文
posted @ 2012-10-25 20:23 北海石松 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 第一:快速排序+递归调用1)选取标点,一般取第一个数,空出一个坑A。2)从右边标志向左扫描,找到第一个比自己小的数,然后将数填充到位置A中,留出一个坑B,然后将左边标志指向左边坑后面的第一个数;3)从左边标志向右扫描,找到第一个比自己大的数,然后将数填到位置B中,留出一个坑A,然后将右边标志指向右边坑前面的第一个数上。4)重复2) 3)知道左边标志遇到右边标志5)将标点数填到左边标志的坑中,返回左边标志的位置。 View Code 对于快排提高效率的地方主要地方时如何选取标点数据。目前常用的有随机快排(不是选取第一个数,而是随机选取一个数)、平衡快排(从第一个、中间一个、最后一个分部取出三.. 阅读全文
posted @ 2012-10-24 15:38 北海石松 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>关键字高亮显示</title> 5 </head> 6 <body> 7 < 阅读全文
posted @ 2012-10-19 15:37 北海石松 阅读(8476) 评论(2) 推荐(2) 编辑
摘要: 源码分析版本:glic-2.9spin_lock加锁pthread_spin_lock:intpthread_spin_lock (lock) pthread_spinlock_t *lock;{ asm ("\n" "1:\t" LOCK_PREFIX "decl %0\n\t" //锁总线,开始加锁,在%0 "jne 2f\n\t" //加锁不成功,jns 汇编指令检查 EFLAGS 寄存器的 SF(符号)位,如果为 0,说明 slock 原来的值为 1,则线程获得锁,然后跳到标签 2 的位置结束本次函数调用。 阅读全文
posted @ 2012-09-27 21:04 北海石松 阅读(3019) 评论(0) 推荐(0) 编辑
摘要: 测试环境:24CPU 2.4GHz ,32G内存实验数据:mutex.cView Code #include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <sys/time.h>#define MAX_LOOP 1000000#define CODE_LEN 10long g_count = 0;int thread_count = 20;int lock_count = 0;int loop_count = 1000000;int code_len = 1;pthread_m 阅读全文
posted @ 2012-09-27 01:48 北海石松 阅读(1526) 评论(0) 推荐(0) 编辑
摘要: 堆(heap)和栈(stack)是C/C++编程不可避免会碰到的两个基本概念。首先,这两个概念都可以在讲数据结构的书中找到,他们都是基本的数据结构,虽然栈更为简单一些。在具体的C/C++编程框架中,这两个概念并不是并行的。对底层机器代码的研究可以揭示,栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的。具体地说,现代计算机(串行执行机制),都直接在代码底层支持栈的数据结构。这体现在,有专门的寄存器指向栈所在的地址,有专门的机器指令完成数据入栈出栈的操作。这种机制的特点是效率高,支持的数据有限,一般是整数,指针,浮点数等系统直接支持的数据类型,并不直接支持其他的数据结构。因为栈的这种特点 阅读全文
posted @ 2012-09-07 09:01 北海石松 阅读(692) 评论(0) 推荐(0) 编辑
摘要: 奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。集束搜索(又名定向搜索,Beam Search 阅读全文
posted @ 2012-09-06 09:17 北海石松 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 文件:kthread.c 1 /** 2 * kthread_create - create a kthread. 3 * @threadfn: the function to run until signal_pending(current). 4 * @data: data ptr for @threadfn. 5 * @namefmt: printf-style name for the thread. 6 * 7 * Description: This helper function creates and names a kernel 8 * thread. The ... 阅读全文
posted @ 2012-09-02 23:49 北海石松 阅读(4685) 评论(0) 推荐(0) 编辑
摘要: KMP算法学习资料:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html http://www.cnblogs.com/wentfar/archive/2011/12/17/2291340.html 严蔚敏 http://v.youku.com/v_show/id_XOTI2ODQ4MTI=.html http://v.youku.com/v_show/id_XOTI3MTY2OTI=.htmlAC算法学习资料:http://www.cppblog.co... 阅读全文
posted @ 2012-07-24 14:03 北海石松 阅读(274) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<stdlib.h>#include<string.h>int find_max(int arr[],int len){ int max; int i; max = arr[0]; for(i = 0 ; i < len;i++) { if( arr[i] > max) max = arr[i]; } return max; }int count_sort(int arr[],int max,int len){ int* mid; in... 阅读全文
posted @ 2012-06-10 23:18 北海石松 阅读(244) 评论(0) 推荐(0) 编辑