数据结构与算法
self-motivation
专注LINUX系统与性能分析优化
展开
-
使用antlr4实现简单计算器----python语言
文章在我的主页:http://www.anger6.com/2021/04/24/compile_principles/antlr4/caculator/原创 2021-04-24 15:22:35 · 344 阅读 · 0 评论 -
开源项目treasure_house
treasure_house介绍treasure_house我开源的一个项目,名字是"宝藏屋"的意思,代表里面是一些有价值的代码。项目语言不限,目的是开发一些业界常用的功能(从基础数据结构到线程池等基础实现)。目的是在造轮子中进一步苦练内功,毕竟很多知识动手实现过和只是用过看过是很不一样的。项目刚刚起步,现在仅实现了链表和内存池。开发人员主要是我和liphx(https://github.com/liphx).欢迎更多代码爱好者参与进来,更多信息可以查看项目地址:https://github.co原创 2021-03-06 15:15:24 · 313 阅读 · 0 评论 -
leetcode竞赛题练习 回溯法(一)------------生成每种字符都是奇数个的字符串
有志同道合的朋友,可以大家一起交流监督学习。哈哈哈 !!!5352.生成每种字符都是奇数个的字符串给你一个整数n,请你返回一个含n个字符的字符串,其中每种字符在该字符串中都恰好出现奇数次。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:"pppz"解释:"pppz" 是一个...原创 2020-03-08 12:06:37 · 287 阅读 · 0 评论 -
牛客网编程题python实现(一)--------华为2016研发工程师编程题
1.删数时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7-&g...原创 2020-02-09 18:52:46 · 827 阅读 · 0 评论 -
跳表---实现有序集合
http://www.anger6.com/?p=1267跳表的基础是链表,它是对有序链表的改进。主要改进有序链表的查找效率。我们知道对于有序的数组,通过二分查找法能够实现O(logn)的查找效率,而对于链表来说,由于其存储空间不是连续的,无法进行随机访问,因此查找效率是O(n).那么链表有没有办法实现和数组一样的查找效率呢?答案就是使用跳表。跳表在redis中有使用,用于...原创 2019-07-20 15:26:11 · 540 阅读 · 0 评论 -
算法导论--------快速排序
下面是python实现的快速排序算法:def quick_sort(ary,low,high): if low < high: q = partiton(ary,low,high) quick_sort(ary,low,q-1) quick_sort(ary,q+1,high)def partiton(ary,low,high):原创 2015-08-02 13:13:04 · 685 阅读 · 0 评论 -
算法导论-----分治策略----------求最大子数组
问题描述:在一个包含负数的数组中,找出和最大的子数组。算法描述:使用分治策略,将数组划分为两个规模尽量相等的子数组。也就是找到数组的中央位置mid。然后考虑求解A[low..mid],A[mid+1,high]。最大子数组必然为下列三种情况之一:1.位于A[low..mid],完全位于左数组2.位于A[mid+1..high],完全位于右数组3.位于A[i..m原创 2015-08-02 11:01:02 · 1419 阅读 · 0 评论 -
算法与数据结构-------递归查找最大元素
用两种递归方式查找数组中的最大元素。方法1:#include #include int cmp1(int a[],int s,int e){ int max1,max2; int m; int n = e - s + 1; m = s + n/2 - 1; if(n == 1) { r原创 2015-02-02 23:38:45 · 1882 阅读 · 0 评论 -
排序算法(2)-冒泡排序
#include using namespace std;class bubble_sort{public:bubble_sort(int *a,int len){this->a = a;this->num = len;}void sort(){for(int i = 0;i{bubble_exchge(a,(num-i-1)原创 2012-05-25 10:09:52 · 775 阅读 · 0 评论 -
排序算法(1)---插入排序
#include using namespace std;class insert_sort{public:insert_sort(int *a,int len){this->a = a;this->num = len;}void sort(){int place = 0;for(int i = 1;i{pla原创 2012-05-24 15:49:35 · 832 阅读 · 0 评论 -
小根堆对数组排序C语言算法实现
下面是我用C语言实现的小根堆排序算法实现,有注释。空间复杂度仅为o(1). 数组中0也存元素。个人认为利用堆排序可以查找出数组中重复的2个元素,因为排好序后,数组中重复的2个元素一定是相邻的2个元素,即最多只需要比较n-1次即可找出。#include int heapDown(int[],int,int);/*构造初始堆*/int buildHeap(i原创 2012-02-19 20:32:19 · 4543 阅读 · 3 评论 -
大数运算经典:棋盘上的米粒。
有一个8*8共64格的棋盘,要求第一个格放1粒米,第二个格放2粒米,第三个放4粒,依次加倍,问放满棋盘共有多少粒米。很显然,这是个很大的数,用long型也无法存放。所以只能通过模拟加法和乘法来达到计算的目的。#include using namespace std;//模拟乘2运算void multi2(short a[]){ short原创 2012-02-18 20:56:04 · 7458 阅读 · 0 评论