读书:历史 -- 空王冠 is a project mainly written in , based on the .15世纪50到80年代的玫瑰战争,短短30年间王冠易手7次,成千上万人死于战乱。这段时期,可以算得上英国历史上最混乱、最残暴的历史时期。 英国统治时间最长的金雀花王朝分崩离析,被都铎王朝取代。...
冒泡排序 算法 is a project mainly written in , based on the .算法思路:
从第一个元素开始遍历,比较当前元素和下一个元素的大小不符合,则交换结束最后一个元素,则重新遍历
实现:
void bubble_sort(vector
插入排序 算法 is a project mainly written in , based on the .算法思路
维护一段有序数列同时遍历待排序数列,在有序数列中找到合适的位置插入元素
基本代码
实现如下:
void insertion(vector
快速排序 算法 is a project mainly written in , based on the .算法思路
序列终任意选择一个数,把序列分为比这个数大和比这个数小的两个子序列不断重复以上步骤(递归)
代码实现
int partition1(vector
选择排序 算法 is a project mainly written in , based on the .算法思路
维护一段有序数列,同时遍历待排序数列,找到最小的元素插入有序数列中重复,直到待排序数列没有剩余元素
代码实现
void select_sort(vector
希尔排序 算法 is a project mainly written in , based on the .算法思路
插入排序的改进版,选择插入距离远的元素选择一个间距,将序列分成很多子序列并行插入排序降低间距,并重复插入元素,直到间距将为1,完成排序。
算法实现
void shell_sort(vector
堆排序 算法 is a project mainly written in , based on the .算法思路
待排序元素按照大小,在二叉树位置上排列构造最大堆(最小堆)跟节点元素为所有元素最大的一个每次取构造最大堆完成的根节点,并重新构造最大堆重复以上步骤,直到堆中只剩下一个元素则排序完成
算法实现
void max_heap(vector
计数排序 算法 is a project mainly written in , based on the .算法思路
统计待排序数列中每个数字出现的次数入数据结构的过程其实就是排序的过程最后再按照统计结果覆盖原序列就行了
PS: 前提条件是知道排序元素的范围
算法实现
void count(vector
归并排序 算法 is a project mainly written in , based on the .算法思路
将一个数列不断拆分为子序列,直到只剩下0或者1个元素再将子序列按顺序合并为原来数列的大小,完成排序
代码实现
//合并两个有序数组
vector
Ceph存储 PG的状态机 源码分析 is a project mainly written in , based on the .文章目录PG 的状态机和peering过程1. PG 状态机变化的时机2. pg的状态演化过程3. pg状态变化实例讲解3.1 pg状态的管理结构3.2 数据的pg状态变化过程3.2.1 NULL -> initial3.2.2 initial -> reset -> Started3.2.3 Started(start) ->St...
多线程:pthread_cond_wait 实现原理 is a project mainly written in , based on the .函数原型 int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) 第一个参数为需要等待的条件,第二个参数为互斥锁 一般该函数和 int pthread_cond_signal(pthread_cond_t *cond);函数一同使用,用来唤醒在cond...
Leetcode-24 两两交换链表中的节点 is a project mainly written in , based on the .题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 方法一(递归): 将配对交换过程拆解为多个以两个元素为一对的子问题 …n(k-1) -> n(k)->n(k+1)...
Leetcode-20 有效的括号匹配 is a project mainly written in , based on the .给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: tru...
Leetcode-2 两数相加 is a project mainly written in , based on the .给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 ->...
Leetcode-135 分发糖果 is a project mainly written in , based on the .题目描述: 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢? 示例 1: 输入: [1,0,2] 输...
Leetcode-25 K个一组反转链表 is a project mainly written in , based on the .给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回:...
Leetcode-386 字典序排数 is a project mainly written in , based on the .给定一个整数 n, 返回从 1 到 n 的字典顺序。 例如, 给定 n =13,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。 请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。 根据题目描述,所谓字典顺序,即数值按照类似字符串首字母的ASCII大小进行排序...
Leetcode-102 二叉树的层次遍历 is a project mainly written in , based on the .给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 方法一(非递归) 二叉树的层次遍历即二叉树的广度遍历,可以使...
Leetcode-440 字典序的第K小数字 is a project mainly written in , based on the .给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 10^9。 示例 : 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。 字典排序数的实现...
Leetcode-53 最大子序和 is a project mainly written in , based on the .题目描述如下: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 方法一(暴力求解): 针对数组中的每一个元素,穷举所有的可能性,...