![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法逻辑
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
数据结构中的排序--归并(merge)排序
以下的图片来自网络资料:https://www.jianshu.com/p/33cffa1ce613归并排序的思路图示:合并两个有序数列的流程思路:C语言的实现代码:#include "stdafx.h"#include <iostream>using namespace std;void print(int data[], int n){ for...转载 2020-02-06 15:29:01 · 679 阅读 · 0 评论 -
数据结构中的排序--堆(heap)排序
堆排序的相关理论和概念可以参考网络上的资源。堆排序涉及到的主要是完全二叉树,以及堆的理解。堆在排序中的作用是在一个完全二叉树中选出待排序数据中的最大或者最小的值,并将这个值放置于根节点。每次只需要将根节点的值取出,放到已排好序的数列中。剩下的数据继续组成一个堆,再取出根节点放到已排好序的数列后面,一直到堆中的数据取完为止。这里面比较重要的就是堆的构建,涉及到左右子节点以及递归的使用。...原创 2020-02-05 16:37:32 · 339 阅读 · 0 评论 -
数据结构中的排序--选择(select)排序
选择排序和冒泡排序不管是在算法的思路上还是代码的实现上都差别不大。不同在于,选择排序可以算作是冒泡排序的一种改进,这种改进主要体现在数据的移动次数上面。冒泡排序每次比较后,如果后面的元素有和比当前的元素大或者小,就会交换位置。而选择排序,比较后是记录当前的最小值得位置,一趟比较完成后才做交换。这样的话,就减少了交换的次数。选择排序的代码实现如下:#include "stdafx.h"#...原创 2020-02-04 10:17:42 · 614 阅读 · 0 评论 -
数据结构中的排序--快速排序
快速排序可以先参考:https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/369842?fr=aladdin#include "stdafx.h"#include <iostream>using namespace std;void print(int dat...原创 2020-02-03 11:51:13 · 375 阅读 · 1 评论 -
数据结构中的排序--冒泡(bubble)排序
冒泡排序的思路:以升序为例,将数列中的第一个数拿出来,依次后后面的比较,如果比后面的数大,那么久交换,直到比较到最后一个,当这一趟比较结束后,第一个数就是最小的。然后再取第二个数,同样的依次和后面的数比较,比较结束后,这个数据就是第二小的,后面的就是依次类推。C语言中两个for循环即可实现。#include "stdafx.h"#include <iostream>...原创 2020-02-02 11:28:33 · 336 阅读 · 0 评论 -
数据结构中的排序--希尔(shell)排序
shell排序是插入排序的优化,当需要排序的数据量比较大的时候,比较有帮助。shell排序是一种分组排序,所以重点不同在于分组。如分组的大小初始值为长度的一般,每次分组的大小为之前的一般,直到为1.原始数列 5 3 7 4 3 9 6 2 10 4 3 7 1 长度13第一次分组6 5 6 1...原创 2020-02-01 22:33:05 · 375 阅读 · 0 评论 -
数据结构中的排序--插入排序(升序和降序)
插入排序的基本思路就是将待排序的数字,插入到已经排好序的数列中。如果数据都在一个数组中,那么这里面会涉及到比较的次数和数据的移动,这些都会影响到算法的效率,如果是链表,就需要考虑的是指针的指向。下面的实例代码是对一个固定的数组进行排序(升序和降序)完整的代码:#include "stdafx.h"#include <iostream>using namespace s...原创 2020-01-30 21:14:15 · 3123 阅读 · 0 评论 -
c++中基于两个栈实现队列的操作
思路:由于队列的先进先出的特性,使用栈的先进后出的特性。可以使用两个栈,其中一个栈实现入队,另一个栈实现出队的操作。定义一个数据节点的类:class data_node{public: data_node() :data(0), next(NULL){}//default constructer function data_node(int value) :data(val...原创 2020-01-12 15:27:15 · 548 阅读 · 0 评论 -
C++实现栈的操作(push和pop)
栈的组织形式:如上图所示:栈也是有多个数据节点组成的,每个节点包含有数据域和指向下一个节点的指针域。并且每次的push、pop和判空都是操作的栈顶指针top。栈中每个数据节点的定义:class data_node{public: data_node() :data(0), next(NULL){}//default constructer function data_nod...原创 2020-01-10 22:46:58 · 16717 阅读 · 0 评论 -
c语言实现队列的先进先出操作
队列的特点是先进先出,有一个队列头和一个队列尾。如下图示:整个队列含有一个队列头指针front和一个队列尾指针rear,并且队列中每个节点中包含一个数据域和一个指向下一个节点的指针域。定义一个节点:typedef struct _node{ int data; struct _node *next;}node;定义队列结构体:typedef struct { nod...原创 2020-01-07 22:24:45 · 6360 阅读 · 0 评论 -
C语言循环单链表实现约瑟夫(JosephUS)问题
1.C语言单链表实现1.1循环链表的创建主要思路是:创建头结点--赋值--创建中间节点--赋值---创建尾结点--赋值。本次采用的循环链表中的数字都是顺序赋值。node *create_josephus(int n){ node *head = NULL, *p=NULL, *new_node=NULL; int i; if (0 != n){ head = (node ...原创 2019-12-09 22:59:36 · 1643 阅读 · 0 评论 -
数据结构的单链表的操作(创建,显示,增加,删除等功能)
目录各个链表的功能函数介绍1.链表的创建2.链表的打印3.获取链表的长度4.在链表中插入一个节点5. 寻找链表中的节点6.删除链表的一个节点7.链表的转置8.寻找一个链表的中间节点9. 采用递归的方式合并两个有序的链表10.采用非递归的方式合并两个有序链表完整的测试代码各个链表的功能函数介绍1.链表的创建链表的创...原创 2019-12-07 11:25:08 · 1503 阅读 · 0 评论 -
c语言中字符串处理的相关函数的具体实现--string.c
(strcpy strncpy strchr strrchr strlen strcmp strncmp strcat strncat memcmp memmove memcpy memset memchr)/* string.c - common string routines *//* * Copyright (c) 2014 Wind River Systems, Inc....转载 2019-06-18 19:53:09 · 290 阅读 · 0 评论 -
c语言中查找一个字符串中首次出现的字串函数strstr的实现方法
#include <string.h>/* * Find the first occurrence of find in s. */char *strstr(const char *s, const char *find){ char c, sc; size_t len; c = *find++; if (c != 0) { len = strlen(fi...转载 2019-06-18 19:45:05 · 1139 阅读 · 0 评论 -
c语言实现字符串数字转长整形strtol函数
#include <limits.h>#include <ctype.h>#include <errno.h>#include <stdlib.h>/* * Convert a string to a long integer. * * Ignores `locale' stuff. Assumes that the upper ...转载 2019-06-18 19:38:57 · 1153 阅读 · 0 评论 -
rv1108-evb-v12 sdk的视频拍照的流程 (2)
上一篇分析了当飞机空中端接收用户地面端发送的拍照命令后,软件回调的执行。但是还没有说明图片的存储和传送这块还没有分析到。所以接下来就是分析图片的存储和发送流程。通过终端的调试打印信息来看,当接收到地面端的拍照指令后,执行文件app\video\process\nv12_process.cpp中的类NV12_MJPG中的公有成员方法StreamPUBase中的函数processFrame。主要是...原创 2019-04-25 15:56:50 · 1175 阅读 · 0 评论 -
rv1108-evb-v12 sdk的视频拍照的流程(1)
以下是rv1108-evb-v12 SDK中的视频拍照的代码流程梳理:当飞机接收到地面段发送的拍照指令后,回调函数tcp_func_take_photo开始执行。tcp_func_take_photo主要实现两部分的功能:首先通过struct photo_param *photo_param = parameter_get_photo_param();获取地面端用户设置的拍照的参数:...原创 2019-04-22 19:36:07 · 985 阅读 · 0 评论 -
C语言实现判断一个字符串是否为回文:
判断一个字符串是否为回文: #include <stdio.h> #include <string.h> static int isCycStr(const char *str) { int strLen = 0, i = 0; strLen = strlen(str); for(i = 0; i < strLen/...原创 2019-01-05 17:24:25 · 2886 阅读 · 0 评论 -
C语言实现库函数中的strstr查找字符串中的子串的功能
自己使用C语言实现的库函数中的strstr函数的功能:代码如下 #include <stdio.h>static const char *strstr_t(const char *str, const char *sub_str){ const char *str_local = NULL; const char *sub_str_local = NU...原创 2019-01-05 11:01:17 · 6817 阅读 · 0 评论