二分查找和它的变种

二分查找是快速定位一个有序数组的算法,它的优点就是减少对比次数。是一个日常生活中也可以用到的算法思想 优点 减少对比次数o(logn) 缺点 要求查找的数组是有序数组查找数组过小二分查找反而慢 思路 取出中间数 (right-left)/2 只能得到第一次的中间数,正确做法是 left+(right-left)/2中间数和给到的数...

2020-03-13 16:13:17

阅读全文

桶排序与计数排序

桶排序,计数排序 都是非基于比较的排序算法,在一定数据量下(O(k)>O(n*log(n)))快于任何基于比较的排序算法 这3个排序算法的通用性不是很高,我认为排序算法虽然实用性在实际生产中各有不同但是他们的思路是比较重要的。桶排序 计数排序 基数排序 都对要排序数组有点要求。 桶排序 桶排序号称是最快的排序方法...

2020-03-10 18:34:20

阅读全文

归并排序与快速排序

归并排序 归并排序的核心实现就是分治,主要利用一个递归无限的把一个数组分为左右2部分,然后利用一个合并函数把排好序的数组退回去。理解起来比较容易 思路 分解2个函数 meage_sort 负责递归分解出数组,meage负责合并排序数组找到数组的中间数,即长度/2,递归的中断条件为传递进去的长度为0通过中间数把meage_s...

2020-01-14 20:58:15

阅读全文

冒泡排序 与 插入排序

排序算法在面试和工作中其实使用的地方还是蛮多的 冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的...

2020-01-05 16:32:09

阅读全文

两数之和解题笔记

每日一刷,用PHP和GO分别实现了2种我能想到的和官方给出的最优解。 题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target...

2019-12-17 23:15:51

阅读全文

回文数算法的实现 && PHP GO C 的性能对比

一直以来我都有一个疑问,大家说的编译型语言比脚本型语言效率高运行快是否属实。在书本知识上来理解,一种更接近底层,一种需要解释器进行转换感觉来说的确如此,周末闲不下来所以特地试试 目的 了解回文数,并写出回文数的几种解法对比(PHP / GO / C)对单个回文数算法的执行数据 什么是回文数判断一个整数是否是...

2019-12-15 02:40:09

阅读全文

数据结构与算法-数组

数组是一种线性表结构,用连续的内存来储存一组相同类型的数据,在C语言自学<a href = 'https://www.phpzjj.com/article/6059.html' target="_blank">数组和指针</a>中有做过这方面的一些笔记 线性结构 线性表包括 数组 队列 栈 链表,他们的特点就是有前后两个方向并且数据排成一条线...

2019-03-27 01:25:10

阅读全文

PHP翻转一个单向链表(图解)

最近在撸mysql发现底层很多涉及到数据结构和算法的知识点,看见有点撸不动了转过头来看算法。 链表是什么<a href='https://www.phpzjj.com/article/6044.html' target="_blank">链表与动态链表</a>这个里面有用C完成的一部分介绍,知识刚好可以交叉。 完整代码实现<?php /** *...

2019-03-14 23:15:50

阅读全文

算法中的时间复杂度

时间复杂度是衡量算法好坏的标准,这边列举一些常见的时间复杂度的级别。 复杂度 说明 O(1) 常数复杂度 O(log n) 对数复杂度 O(n) 线性时间复杂度 O(n^2) 平方 O(n^3) 立方 O(2^n) 指数 O(n!) 阶乘 算法在少量计算下没多少体现,在次数和量级增长的情...

2019-03-11 19:57:46

阅读全文