摘要: 步骤 两两比较相邻元素 ai 和 ai+1 (i = 1, 2, ···, n -1),若ai > ai+1,则交换ai 和 ai+1的位置; 对剩下的n - 1个元素,再两两进行比较,按同样规则交换它们的位置,经过n - 2次比较,将最大值交换到 an-1 的位置; 如法炮制,经过n - 1 趟的 阅读全文
posted @ 2021-07-31 22:37 白藏i 阅读(50) 评论(0) 推荐(0)
摘要: 使用前提 数组已经按升序排列 基本原理 首先将要查找的元素(key)与数组的中间元素比较 如果key小于中间元素,只需在数组的前一半元素中继续查找 如果key和中间元素相等,匹配成功,查找结束 如果key大于中间元素,只需在数组的后一半元素中继续查找 阅读全文
posted @ 2021-07-31 22:13 白藏i 阅读(28) 评论(0) 推荐(0)
摘要: C语言中 printf("%.2f", a); //a保留两位小数 C++中(需要 #include <iomanip>) cout << "a ='' << setprecision(2) << a; 若 a 为 0.200001,则输出 a = 0.2,0被省略了 cout.setf(ios:: 阅读全文
posted @ 2021-07-31 20:59 白藏i 阅读(569) 评论(0) 推荐(0)
摘要: 海伦公式 double a, b, c; //三条边的边长 double s, area; if (a + b > c && b + c > a && a + c > b) //三角形判断 { s = (a + b + c) / 2; //s为周长的一半 area = sqrt(s * (s - a 阅读全文
posted @ 2021-07-31 20:47 白藏i 阅读(95) 评论(0) 推荐(0)
摘要: 向量积(叉积) 令 原点为A,B和C在向量a和向量b上(哪一点在哪个向量上不确定) 根据“右手法则”, 向量 AB x 向量 AC 的结果为正时,ABC顺序为逆时针;反之,结果为负时,ABC为顺时针。 代码 int main() { double x1, y1, x2, y2, x3, y3; wh 阅读全文
posted @ 2021-07-31 20:39 白藏i 阅读(87) 评论(0) 推荐(0)
摘要: 求ab % c 的值。其中a, b, c 是整数,且 0 < a,c < 109,0 < b < 1018 暴力算法 O(b) long long ans = 1; for (long long i = 1; i <= b; i++) { ans *= a; } ans % c; 优化(暴力算法) 阅读全文
posted @ 2021-07-31 20:21 白藏i 阅读(131) 评论(0) 推荐(0)
摘要: Def 给定一个正整数m,如果两个整数a和b满足 a - b 能被m整除,即(a - b) / m 得到一个整数,那么就称整数a 与 b对模 m 同余。 记作:a ≡ b(mod m) 【对模m同余的整数是一个等价关系】 读作:a同余于b模m(或 a 与 b 对模 m 同余) eg:26 ≡ 2 ( 阅读全文
posted @ 2021-07-31 13:57 白藏i 阅读(341) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2021-07-31 13:28 白藏i 阅读(0) 评论(0) 推荐(0)
摘要: 例子:若初始序列123456(是第一个),求问107个是? 107 - 1 = 106 ①106 / 4!= 4 ······10 即,1 2 3 4 5中有四个比它小,所以第一位是5 ②10 / 3!= 1······4 即,1 2 3 4 中有一个比它小,所以第二位是2 ③4 / 2!= 2·· 阅读全文
posted @ 2021-07-31 13:24 白藏i 阅读(56) 评论(0) 推荐(0)
摘要: Def 康托展开是一个全排列到一个自然数的双射。实质是计算当前全排列在所有有小到大全排列中的顺序,可逆。 公式: X = An (n - 1)! + An - 1 (n - 2)! + ··· + A1· 0! eg: [5 2 4 1 3]是序号几 ①首位为5:当首位取1或2或3或4时,剩下的数不 阅读全文
posted @ 2021-07-31 12:51 白藏i 阅读(99) 评论(0) 推荐(0)