数据结构与算法
n大橘为重n
/* 一个有点小情怀的码农 */
展开
-
C++11新增alignas关键字作用
alignas关键字用来设置内存中对齐方式,最小是8字节对齐,可以是16,32,64,128等。下面先写个alignas对齐的实际代码,等下再来说为什么会这样。#include <iostream>using namespace std; struct struct_Test1{ char c; int i; double d;}; struct alignas(8) struct_Test2{ char c; int i; double d;};转载 2021-02-20 11:36:26 · 2861 阅读 · 1 评论 -
BF算法(暴力算法)--模式匹配算法
模式匹配算法:是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。用途:搜索引擎、拼写检查、语言翻译、数据压缩等。BF算法:BF算法即暴力(Brute Force)算法,是普通的模式匹配算法。BF算法的思想:将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等...转载 2020-02-18 15:42:24 · 7133 阅读 · 0 评论 -
循环队列的操作
不是只有排序,二叉树才叫数据结构,面试栽在基本的数组和队列,链表,栈的有的是!!!本文对循环队列的重要操作作出总结。注:为了避免队列空和满两个状态混淆,采用空闲一个位置的方式,即N个元素空间的循环队列最多只能存放N-1个有效元素。这也是大多数教材的做法。1) 循环队列初始化:front=rear=0;2)入队操作:rear=(rear+1)%size;3)出队操作:front=(fro...转载 2020-02-18 13:43:29 · 693 阅读 · 0 评论 -
常用排序算法归纳(1)——冒泡排序
一、概念:冒泡排序,是对桶排序改进的一种排序,不仅解决了浪费空间的问题,而且还可以进行浮点数的比较和输出一些必要的信息,容易实现由小到大(由大到小)的一种排序方法。二、算法思路: 1、每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来; 2、用两层for循环进行比较:1>外层循环控制轮数; 2>内层循环实现...原创 2018-05-27 23:05:37 · 347 阅读 · 0 评论 -
常用排序算法归纳(2)——插入排序
一、概念: 插入排序是排序算法的一种,它不改变原有的序列(数组),而是创建一个新的序列,在新序列上进行操作。二、算法思路: 插入排序的基本思想是,将元素逐个添加到已经排序好的数组中去,同时要求,插入的元素必须在正确的位置,这样原来排序好的数组是仍然有序的。 具体步骤: 1、无序数组排序中, 这个无序数组分为两部分排序好的子数组和待插入的元素。 2、第一轮时,将第一个元...原创 2018-05-28 11:24:56 · 205 阅读 · 0 评论 -
常用排序算法归纳(3)——选择排序
一、概念: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是非稳定排序算法。二、算法思路: 1、先设定一个变量,并且把所需排列的数据中第一个的值赋给该变量; 2、将该变量与剩下数据挨个进行比较,选出最小(或最大)的一个值,与 第一个数据交换位置; 3、然后把第二个数据的值赋给变量,将该变量与剩下...原创 2018-05-28 18:47:34 · 441 阅读 · 0 评论 -
约瑟夫环问题:用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。(采用循环链表)
#if 1// 用户输入M,N值,从1至N开始顺序// 循环数数,每数到M输出该数值,// 直至全部输出#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;// 节点typedef struct node{ int data; nod...原创 2018-08-22 11:52:00 · 1106 阅读 · 0 评论