什么是选择排序?
它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零
思路在未排序序列中找到最小(大)元素,将其与第一个元素交换
在未排序序列中找到最小(大)元素,将其与第二个元素交换
…
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647int main(){ int arr[] = { 10,9,8,7,6,5,4,3,2,1 }; int sz = sizeof(arr) / sizeof(arr[0]); int i, j; for (i = 0; i < sz - 1; i++) { int min = i; for (j = i + 1; j < sz; j++) ...
什么是插入排序?
插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。 按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序 。
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768int main(){ int arr[] = { 10,9,8,7,6,5,4,3,2,1 }; int sz = sizeof(arr) / sizeof(arr[0]); int i, j; int tmp; for (i = 1; i < 10; i++) { for (j = i; (j > 0) && (ar ...
传统网页布局方式网页布局的本质——用 CSS 来摆放盒子,把盒子放到相应位置
普通流
浮动
定位
标准流(普通流/文档流)标准流,就是标签按照规定好的默认方式排列。
块级元素会独占一行,从上到下顺序排列 常用元素:div、hr、p、h1-h6、ul、ol、dl、form、table
行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行。 常用元素:span、a、i、em
标准流是最基本的布局方式。
以上三种方式都是来摆放盒子的,盒子摆到合适位置,布局自然就完成了。
实际开发中,一个页面基本包含三种布局方式。
浮动很多布局效果,标准流没办法完成,此时就可以利用浮动完成布局。浮动可以改变元素标签默认排列方式。如 让多个块级元素一行显示。
网页布局第一准则:多个块级元素 纵向 排列找 标准流,多个块级元素 横向 排列找 浮动。
网页布局第二准则:先设置盒子大小,再设置盒子位置。
123456/*none 元素不浮动left 元素向左浮动right 元素向右浮动*/选择器 { float: 属性值; }
特性
浮动元素会脱离标准流,移动到指定位置(脱标); ...
魔改前须知
魔改有风险,记得备份。
鉴于每个人的根目录名称都不一样,本帖 博客根目录 一律以[BlogRoot]指代。
涉及魔改源码的内容,会使用diff代码块标识,复制时请不要忘记删除前面的+、-符号。
引入 自定义的css与js文件,方法见 Hexo博客添加自定义css和js文件
themes/butterfly 等同于 /node_modules/hexo-theme-butterfly
效果:见主页则边栏1)在 BlogRoot/node_modules/hexo-theme-butterfly/layout/includes/widget 文件夹下新建card_wx.pug 文件, 填入以下内容
12345#card-wechat.card-widget.tzy-right-widget #flip-wrapper #flip-content .face .back.face
2)在BlogRoot/node_modules/hexo-theme-butterfly/layout/includes/widget/index.p ...
盒子模型CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,包括:边框、外边距、内边距和实际内容。
边框(border)border 可以设置元素边框。边框有三个组成:border-width、border-style、border-color
12345678910111213/*属性可连写border-width:定义边框粗细,单位 pxborder-style:边框样式border-color:边框颜色*/border: border-width || border-style || border-color;/* 简写 */border: 5px solid pink;/* 分开写 分别指定上下左右*/border-top: 1px solid red;
表格的细线边框border-collapse 属性控制浏览器绘制 表格边框 的方式。它控制相邻单元格的边框(合并相邻边框)。
12/* 表示将相邻边框合并在一起 */border-collapse: collapse;
边框会影响盒子实际大小边框会额外增加盒子的实际大小
内边距(padding)padding 属性设 ...
css复合选择器
后代选择器
子选择器
并集选择器
伪类选择器
后代选择器后代选择器又称为包含选择器,可以选择父元素里的子元素。写法是将外层标签写在前面,内层标签写在后面,中间 空格分开。
选择元素 1 里面所有的元素 2
1元素1 元素2 { 样式声明; }
子选择器子元素选择器(子选择器)只能选择作为元素作为元素的最近一级子元素。简单理解就是选 亲儿子。元素之间用 大于号 > 隔开
注意: 元素 2 必须是亲儿子。最终选择的是元素 2
1元素1 > 元素2 { 样式声明; }
并集选择器选择多组标签,同时为他们定义相同的样式。通过 英文逗号 , 连接而成
1元素1, 元素2 { 样式声明; }
伪类选择器用于 向某些选择器添加特殊的效果,用冒号 : 表示。
1)链接伪类选择器
要按照 LVHA 的顺序声明,hover 常用
1234a:link /*选择所有未被访问的链接*/a:visited /*选择所有已被访问的链接*/a:hover /*选择鼠标指针位于其上的链接*/a:active /*选择活动链接( ...
什么是水仙花数
水仙花数:一个三位数,其各位数字立方和等于该数本身。
举例:123
123 % 10 = 3
123 / 10 % 10 = 2
123 / 100 = 1
代码123456789101112131415161718int main(){ int a, b, c; int i = 0; for (i = 100; i < 1000; i++) { a = i % 10; // 个位 b = i / 10 % 10; // 十位 c = i / 100; // 百位 if (i == a * a * a + b * b * b + c * c * c) { printf("%d ", i); } } return 0;}
什么是斐波那契?
像如下这样的数列:1,1,2,3,5,8,13,21,34,55……
从第三项开始,每一项都等于前两项之和。
斐波那契数列是前两个数的和等于第三个数(依次类推)所以我们需要来创建三个变量来代表前两个数和第三个数,用后一个数赋值给前一个数的方式实现将数字一个一个想后推移
方法一1234567891011121314151617181920212223242526272829303132int main(){ int a = 1; int b = 1; int c; int i = 0; int n = 0; scanf("%d", &n); // 第几项 for (i = 3; i <= n; i++) { c = a + b; a = b; b = c; } printf("%d", b); return 0;}--------------------------- ...
暴力法
找到a,b中的较大值,假设是最小公倍数,然后去整除,不能整除就++,直到找到最小公倍数为止
12345678910111213141516171819202122int main(){ int a = 12; int b = 16; if (a < b) { int tmp = a; a = b; b = tmp; } int i = 0; for (i = a;; i++) { if (i % a == 0 && i % b == 0) { break; } } printf("%d is lowest common multiple", i); return 0;}
搭配辗转相除法求最小公倍数最小公倍数 = 两数乘积 / 最大公因数
先使用辗转相除法求最大公约数,然后根据最大公约数 ...
什么是最大公约数?
最大公约数 的本质是一个最大的能同时被两整数整除的自然数
求最大公约数的方法暴力法
原理:先比较两数大小,从较小数开始向下递增,直至找到最大公约数
123456789101112131415161718192021int main(){ int a = 12; int b = 16; int i = 0; if (a > b) { int tmp = a; a = b; b = tmp; } for (i = a; i > 0; i--) { if (a % i == 0 && b % i == 0) { printf("%d is greatest common divisor", i); break; } } return 0;}
辗转相除法(欧几 ...