
数据结构、算法
JDSH0224
这个作者很懒,什么都没留下…
展开
-
栈
/* * stack.cpp * * Created on: 2013-9-23 * Author: mikechen */#include #include //#include #include #define SUCC 1#define FAIL 0typedef void (*DESTORYFUNC)(void *);typedef struct STACK {void **ppBase;原创 2013-09-24 15:06:04 · 946 阅读 · 0 评论 -
选择排序算法(3)
目录选择排序算法原理选择排序算法的场景选择排序算法的实现选择排序的运行结果 选择排序算法原理 选择排序就是重复“从待排序的数据中寻找最小值,将其与序列最左边的数字进行交换”这一操作的算法。在序列中寻找最小值时使用的是线性查找。选择排序使用了线性查找来寻找最小值,因此在第1轮中需要比较n-1个数字,第2轮需要比较n-2个数字……到第n-1轮的时候就只需比较...原创 2019-05-16 23:36:19 · 352 阅读 · 0 评论 -
冒泡排序算法(2)
目录冒泡排序算法原理冒泡排序算法的使用场景冒泡排序算法的实现冒泡排序算法的运行结果 冒泡排序算法原理 冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。在冒泡排序中,第1轮需要比较n-1次,第2轮需要比较n-2次……第...原创 2019-05-16 00:10:45 · 257 阅读 · 0 评论 -
排序算法分类(1)
本博客主要分析不同排序算法的原理及实现,具体排序算法包括如下几种:1. 冒泡排序2. 选择排序3. 插入排序4. 归并排序5. 快速排序6. 堆排序原创 2019-05-15 23:29:36 · 503 阅读 · 0 评论 -
快速排序算法(6)
目录快速排序算法原理快速排序算法的使用场景快速排序算法的实现快速排序算法的运行结果快速排序算法原理 快速排序算法首先会在序列中随机选择一个基准值(pivot),然后将除了基准值以外的数分为“比基准值小的数”和“比基准值大的数”这两个类别,再将其排列成以下形式。分割子序列时需要选择基准值,如果每次选择的基准值都能使得两个子序列的长度为原本的一半,那么快速排序的...原创 2019-05-19 23:41:59 · 185 阅读 · 0 评论 -
归并排序算法(5)
目录归并排序算法原理归并排序算法的使用场景归并排序算法的实现归并排序算法的运行结果归并排序算法原理归并排序算法会把序列分成长度相同的两个子序列,当无法继续往下分时(也就是每个子序列中只有一个数据时),就对子序列进行归并。归并指的是把两个排好序的子序列合并成一个有序序列。该操作会一直重复执行,直到所有子序列都归并为一个整体为止。归并排序中,分割序列所花费的时间不算在运行时间内...原创 2019-05-19 00:26:21 · 307 阅读 · 0 评论 -
算法
1. 排序 排序就是将输入的数字按照从小到大的顺序进行排列。1.1 冒泡排序 冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。案例:...... 在冒泡排序中,第1轮需要比较n-1次,第2轮需要...原创 2019-05-13 23:29:21 · 167 阅读 · 0 评论 -
红黑树漫画
转自:http://www.sohu.com/a/201923614_466939————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查...原创 2019-03-20 23:42:52 · 188 阅读 · 0 评论 -
时间复杂度
预先知道算法的复杂度是一回事,了解其后的原理是另一件事情。不管你是计算机科班出身还是想有效解决最优化问题,如果想要用自己的知识解决实际问题,你都必须理解时间复杂度。先从简单直观的 O(1) 和 O(n) 复杂度说起。O(1) 表示一次操作即可直接取得目标元素(比如字典或哈希表),O(n) 意味着先要检查 n 个元素来搜索目标,但是 O(log n) 是什么意思呢?你第一次听说 O(lo...原创 2019-03-19 23:23:17 · 133 阅读 · 0 评论 -
队列
*队列*/ #include <stdlib.h>#include <stdio.h>#include <string.h> struct node {int value;struct node *next;}; struct queue {int count;struct node *head;...原创 2013-05-28 22:12:15 · 788 阅读 · 0 评论 -
阅读busybox telnetd line[8] = "pqrstuvwxyzabcde"[i]算法
最近在看busybox中telnetd源码,发下在make_new_session-->xgetpty-->存在如下部分代码 ... strcpy(line, "/dev/ptyXX"); for (i = 0; i < 16; i++) { line[8] = "pqrstuvwxyzabcde"[i]; line[9] = '0'; if (st...原创 2018-10-26 11:22:23 · 386 阅读 · 0 评论 -
字节对齐算法
//宏定义,字节对齐算法//@x-表示字节数//@a-表示多少个字节对齐#define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1))范例:int size = ALIGN(101, 4);size=104int size = ALIGN(100, 4);size=100...原创 2018-06-11 09:21:08 · 1290 阅读 · 1 评论 -
用宏定义实现不同类型的数据比较
宏定义,实现不同类型的数据比较#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))#define min_t(type, x, y) ({ \ type __min1 = (x); \ type __min2 = (y); \ __min1 < __min2 ? __min1 : __min2; })#define m...原创 2018-06-06 22:55:33 · 1649 阅读 · 0 评论 -
数制之间的转换
①十进制数与P进制数之间的转换方法:十进制除以P进制的基数(二进制2、八进制8、十六进制16)②p进制数与十进制数之间的转换方法:P进制按权展开③BCD码是用4 位二进制数码来表示一位十进制数字。BYTE BcdToByte(BYTE bcd) {return ((bcd >> 4) & 0x0f) * 10 + (bcd & 0x0原创 2014-09-08 19:14:07 · 904 阅读 · 0 评论 -
Select Sort Algorithm
//选择排序算法 #include #include #include #define max_num 100#define SWAP(X, Y, TEMP) ((TEMP = X), (X = Y), (Y = TEMP))int main(int argc, char *argv[]){ int list[max_num]; int i, j, num, min, tem原创 2014-02-08 20:13:48 · 988 阅读 · 0 评论 -
折半查找法
#include #include #include #define max_num 100#define SWAP(X, Y, TEMP) ((TEMP = X), (X = Y), (Y = TEMP))int main(int argc, char *argv[]){ int list[max_num]; int i, j, num, min, temp; int m原创 2014-02-08 21:45:15 · 753 阅读 · 0 评论 -
递归全排序排列
#include #include #include #define max_num 100#define SWAP(X, Y, TEMP) ((TEMP = X), (X = Y), (Y = TEMP))//很灵活的递归算法void perm(int *list, int i, int n){ int j, temp; if (i == (n - 1)) { for原创 2014-02-08 22:29:23 · 1159 阅读 · 0 评论 -
队列
队列:队列是先进先出,栈是先进后出;队列的一般操作如下:① 创建空的队列② 判断队列是否为空③ 判断队列是否为满④ 进队操作(向队列尾部添加元素)⑤ 出对操作(从队列中弹出元素)⑥ 释放队列 /* *queue.cpp * * Createdon:2013-9-24 * Auth原创 2013-09-24 15:03:45 · 963 阅读 · 0 评论 -
插入排序算法(4)
目录插入排序算法原理插入排序算法的使用场景插入排序算法的实现插入排序算法的运行结果 插入排序算法原理 在插入排序中,需要将取出的数据与其左边的数字进行比较。就跟前面讲的步骤一样,如果左边的数字更小,就不需要继续比较,本轮操作到此结束,自然也不需要交换数字的位置。然而,如果取出的数字比左边已归位的数字都要小,就必须不停地比较大小,交换数字,直到它到达整个...原创 2019-05-17 00:01:32 · 231 阅读 · 0 评论