算法
半梦半醒间幸运_
这个作者很懒,什么都没留下…
展开
-
c++实现LRU(最近未使用)缓存算法
LRU(Least Recently Used Algorithm)LRU算法的高效执行(插入、查找、删除)。插入、删除(链表)查找(哈希表)因此采用哈希表和链表相结合的方式实现LRU算法。#include<iostream>#include<unordered_map>//包含include<list>using namespace std;class cacheLRU{private: struct Node { int key;原创 2020-07-26 08:53:16 · 155 阅读 · 0 评论 -
LeetCode 86题:分割链表的C++代码
给定一个链表和一个特定的值x,对链表进行分割,使得所有小于x的节点都在大于或等于x的节点之前,且新的链表应保留两个分区中节点的原始相对位置不变。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5//双链表//遍历原始链表//将小的节点放在一个链表中,大于等于的节点放在另外一个节点中//将两个链表拼接struct ListNode{ int val; ListNo原创 2020-07-22 09:59:33 · 203 阅读 · 0 评论 -
c++排序算法之希尔排序
希尔排序的提出原因:希尔排序是对插入排序的优化。假设在插入排序中,有个最小元素位于排序序列最末尾,那么在排序过程中需要将该最小值一步一步地移动到序列的第一个位置,此时复杂度太高O(n^2),为了避免该类情况发生,给其设置了一个增量让其大步移动,优化其效率,此即为希尔排序。希尔排序的基本思想:先取小于n的整数d1作为第一个增量,把全部记录分组。所有距离为d1倍数的记录放在同一组中,先在各组内进行直接插入排序;然后,去第二个增量d2<d1重复上述的分组和排序,直到所取的增量dt=1(dt<dt原创 2020-07-21 15:01:52 · 171 阅读 · 0 评论 -
leetcode1035题:不相交的线
思路:最长公共子序列、动态规划#include<iostream>#include<vector>#include<algorithm>using namespace std;int unintersect_line(vector<int>& nums1,vector<int>& nums2){ int len1=nums1.size(); int len2=nums2.size(); vector<vec原创 2020-07-21 09:45:45 · 250 阅读 · 0 评论 -
C++排序算法之插入排序
原理:前部分有序,后部分无序,每次将无须部分的第一个数字插入到有序部分的合适位置,有序部分长度加1,无序部分长度减1。时间复杂度O(n^2),空间复杂度O(1),稳定排序。#include<iostream>#include<vector>#include<algorithm>using namespace std;void insert_sort(vector<int>& nums){ int len=nums.size();原创 2020-07-20 10:03:09 · 151 阅读 · 0 评论 -
c++排序算法之冒泡排序
C++排序算法之冒泡排序:思想:每次遍历,将相邻元素两两比较,前者小,后者大,直至将最大的元素放置在数组尾部,数组长度减1,即未排序部分的长度。稳定排序,时间复杂度O(n^2),空间复杂度O(1)。#include<iostream>#include<vector>#include<algorithm>using namespace std;void bubble_sort(vector<int>& nums){ int len=原创 2020-07-19 21:30:23 · 193 阅读 · 0 评论 -
插入排序
插入排序算法基本思想:将数组分为两部分,前一部分为已经排好顺序的部分,后一部分为数组无序部分,依次将无序部分的元素插入有序部分的合适位置,直至无序部分为空,排序完成。与冒泡排序相对比:1.在冒泡排序中,经过每一轮的排序处理后,数组的后一部分是有序的,前一部分是无序的;2.在插入排序中,经过每一轮的排序处理后,数组的前一部分是有序的,后一部分是无序的;C++实现代码如下:...原创 2019-10-23 10:06:39 · 97 阅读 · 0 评论 -
冒泡排序
冒泡排序:两层for循环,有两种写法,可以从小到大排序(正序),也可从大到小排序(逆序)。核心思想:每一轮,从待排序数组头部开始,每两个元素比较大小并进行交换,直到一轮完成,将找出的最大或最小元素放置在数组尾部,然后,不断重复上述过程,直到所有元素都排好位置。代码如下:算法空间复杂度0(1),时间复杂度0(n^2)#include "pch.h"#include <ios...原创 2019-10-22 21:15:07 · 103 阅读 · 0 评论