- 博客(16)
- 资源 (11)
- 收藏
- 关注
转载 排序算法总结
排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。 我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵呵。 1.普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为
2014-06-08 12:45:09 468
转载 C语言实现简单线程池
C语言实现简单线程池 有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带来的开销,我们可以使用线程池。下面是一个C语言实现的简单的线程池。 头文件: 1: #ifndef THREAD_POOL_H__ 2: #define THREAD_POOL_H__ 3: 4: #include 5:
2014-06-08 10:17:35 495
转载 线性表之链式存储结构
线性表之链式存储结构 线性表的顺序存储结构要求逻辑关系上相邻的元素在物理位置上也相邻,这样方便了随机存取,但是在插入和删除元素时,需要移动大量元素,而线性表的链式存储则不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构的可随机存取的优点,不过在插入和删除元素时比较方便。 单链表 单链表可由头指针唯一确定,在C语言中可用“结构指针”来描述: 1: ty
2014-06-08 10:14:24 478
转载 两数交换
两数交换 在排序算法中,我们经常需要交换两个数的值, 在进入算法之前,先在这里复习一下两数交换的实现方法,算是开胃小菜。 实现1: 最简单的也是最常用的实现: 1: void swap(int *a, int *b) 2: { 3: int temp = *a; 4: *a = *b;
2014-06-08 10:09:55 498
转载 字符串系列之:逆序输出字符串
字符串系列之:逆序输出字符串 字符串的各种操作向来也是面试官的最爱,从简单的开始:逆序输出字符串。 实现1: 1: void reverse(const char *str) 2: { 3: ssize_t i; 4: size_t len = strlen(str); 5: 6: for
2014-06-08 10:09:00 519
转载 最大公约数:辗转相除法
最大公约数:辗转相除法 在数学中, 辗转相除法,又称欧几里得算法,是求最大公约数的算法。 其算法步骤: a,b相除将b赋值给a将余数赋值给b若b为0, 则a为最大公约数;否则执行步骤1-3直至b为0。 例如计算6和4的最大公约数: a=6,b=4,a/b余数为2将b赋值给a,a=4将余数赋值给b,b=2b不为0, 重复执行1-3a=4,b=2,a/b余数为0将b赋
2014-06-08 10:06:39 534
转载 从数组中找出最大的和最小的数
从数组中找出最大的和最小的数 给定一整形数组a,要求从中找出最大的数和最小的数,并计算时间复杂度。 实现1: 遍历数组,每次取数组中一个元素, 分别与当前最大值和最小值进行比较,时间复杂度O(2n) 1: void search(int a[], size_t n, int &max, int &min) 2: { 3: int i;
2014-06-08 10:05:41 1225
转载 线性表之顺序存储结构
线性表之顺序存储结构 线性表的顺序存储是指用一组地址连续的存储单元一次存储线性表的数据元素。在C语言中,可以使用动态数组来实现线性表的顺序存储。 定义: 1: #define LIST_INIT_SIZE 100 2: #define LIST_INCREMENT 10 3: 4: typedef struct {
2014-06-08 10:03:49 415
转载 链表有关的常见面试题
链表有关的常见面试题 1.单链表逆序 实现1: 遍历: 1: /* 2: * 遍历链表, 将每个结点的next置为其前驱 3: * 遍历过程中需要额外的指针来记录结点的前驱和后继 4: */ 5: LinkList ReverseList(LinkList L) 6: { 7: if (!L ||
2014-06-08 10:01:03 395
转载 求一个数的二进制表示中1的个数
求一个数的二进制表示中1的个数 实现1: 使用按位与和移位操作符,逐位进行统计。需要注意的是,对于有符号的右移操作符号位如何处理是不确定的,因此我们在进行移位操作前要将有符号型转换为无符号型。 1: int bitcount(int n) 2: { 3: unsigned int count = 0, m = n; /* 注意, 我们这里
2014-06-08 09:59:40 455
转载 如何判断一个非负整数是否是2的幂
如何判断一个非负整数是否是2的幂 如何判断一个数是2的幂,主要是要找出2的幂次方的数的特点。我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0。(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去
2014-06-08 09:58:17 474
转载 冒泡排序
冒泡排序 冒泡排序是最基本的排序算法之一,其核心思想是从后向前遍历数组,比较a[i]和a[i-1],如果a[i]比a[i-1]小,则将两者交换。这样一次遍历之后,最小的元素位于数组最前,再对除最小元素外的子数组进行遍历。进行n次(n数组元素个数)遍历后即排好序。外层循环为n次,内层循环分别为n-1, n-2…1次。 时间复杂度: O(n^2) 稳定性:稳定 实现:
2014-06-08 09:57:02 362
转载 直接插入排序
直接插入排序 直接插入排序是一种比较容易理解的排序算法,其核心思想是遍历数组,将数组中的元素逐个插入到已排序序列中。 时间复杂度:O(n^2) 稳定性:稳定 实现: 1: /* @brief insetion sort 2: * insert the new element to the sorted subarray 3: */
2014-06-08 09:55:14 335
转载 选择排序
选择排序 选择排序是一种简单直观的排序算法,其核心思想是:遍历数组,从未排序的序列中找到最小元素,将其放到已排序序列的末尾。 时间复杂度:O(n^2) 稳定性 :不稳定 1: /* 2: * @brief selection sort 3: */ 4: void 5: selection_sort(int a[], i
2014-06-08 09:53:09 325
转载 通过HOOK获取QQ游戏登录密码
//通过HOOK获取QQ游戏登录密码 //by redice 2008.7.19 //redice@163.com 不是什么新鲜货了,只是想重温一下钩子及 DLL的编写... 先发个程序运行效果图: 112902_1216450756koIx.gif (33.56 KB) 不得不先说一下API函数SendMessage: 使用SendMessa
2013-03-28 10:17:18 655
原创 获取另一窗口控件的内容
记录一下。 首先用SPY++,查看其他程序的控件ID及其主窗口名, 主窗口名为“Standalone PGMplus”,现在我要获取Edit控件的值,譬如0008056C "62" Static, 找到其控件ID----0x00000440。 HWND hWnd; hWnd=::FindWindow(NULL,"Standalone PGMplus")
2013-03-27 09:50:50 1535
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人