数据结构与算法
文章平均质量分 70
For_zwb
虚心万事能成;自满十事九空。
展开
-
C++实现无锁队列
CAS等原子操作在介绍无锁队列之前,我们需要知道一个重要的技术就是CAS操作,**现在几乎所有的CPU指令都支持CAS等原子操作。**有了这个原子操作,我们就可以用其来实现各种无锁的数据结构了。本文用到的是GCC的CASGCC4.1+版本中支持CAS的原子操作bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)type __sync_val_compare_and_swap (type *ptr,原创 2020-09-14 17:40:26 · 3221 阅读 · 7 评论 -
迷宫问题(C语言实现)
问题描述定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 Input 一个5 ×...原创 2018-07-30 23:33:27 · 36781 阅读 · 17 评论 -
BFS之喝可乐问题(C语言实现)
问题描述大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,...原创 2018-08-05 17:55:30 · 1054 阅读 · 0 评论 -
堆排序-C实现
堆排序本篇博客假定读者已经掌握了完全二叉树和二叉堆的概念。1.概念堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据...原创 2018-09-28 11:10:53 · 1309 阅读 · 0 评论 -
二分查找(Binary search)
二分查找#include<iostream>#include<array>#include<memory>class search{public: int s1(int arr[], int len, int ser); //二分查找查找一个数 int s2(int arr[], int len, int ser); //二分查找 ...原创 2019-10-08 20:34:37 · 504 阅读 · 0 评论