希尔排序的思路与c++实现
写在前面
写一下希尔排序, 其实就是插入排序的升级版, 不是一次移动一个, 而是一次移动一组.
回顾插入排序
void InsertionSort(vector<int> &arr) {
int n = arr.size();
for (int i = 1; i < n; ++i) {
int tmp = arr[i], j = i;
for (; j >= 0 && arr[j - 1] > tmp; --j) arr[j] = arr[j - 1];
arr[j] = tmp;
}
}
原理
这里参考了维基百科的原理分析,
希尔排序 ...
谈谈macos下的python版本管理问题
写在前面
MacOS上有很多Python, 管理起来可是个麻烦事, 并且一不小心就把包安到系统自带的Python里面了, 加上Python2的历史遗留问题, 让MacOS下的Python版本管理难上加难. 如果凑巧还是homebrew的用户的话, Python又多了一个, 如果不巧电脑又是m1系列芯片的mac, 那么在brew安装时候, 还要安装Rosetta2转译的Python, 这么多的Python是不是头昏眼花了…
当然啦, MacOS12.3的发布去掉了MacOS系统自带的Python2.7, 也算是解决了一个老大难问题了.
下面来说说如何区分MacOS下的Python, 以及如何为指定的Python安装包.
区分Python
以我的电脑为例, 我的电脑是m1...
力扣只出现一次的数字系列总结(c++)
写在前面
最近用到的异或运算越来越多了, 而其中又以只出现一次的数字为经典题型, 下面总结总结一下只出现一次的数字系列. 代码均为C++.
前置知识
逻辑表达式
下面这些结论都可以自己写一个真值表推导得出.
符号
运算
性质
$\bar\ $
逻辑非
-
$\cdot$ (也可省略不写)
逻辑与
$xy=yx$, $x\cdot1=x$$x\cdot x=x$, $x\cdot\bar x=0$,
$+$
逻辑或
$x+y=y+x$, ...
C++写出像python那样优雅的一行交换函数
写在前面
众所周知, Python中交换两个数可以用:
a, b = b, a
十分优雅, 那么C++可以这样吗? C++11告诉你, 能!
tie(a, b) = pair(b, a);
测试一下:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
int a = 10, b = 20;
cout << a << " " << b << endl;
tie(a, b) = pair(b, a);
cout << a << " " <&...
快速排序算法的递归,迭代法实现(c++)
思路
分治法
主要分成下面三个步骤:
选定基准值(默认是数组首元素), 这里称为pivot
找到基准值待放置的位置(排序之后的位置), 将大于基准值的元素放在基准值后面, 小于的放在前面
递归上述过程.
代码(递归)
下面这种方法是算法导论给出的, 先写子数组处理函数, 再给出递归过程. pivot取最右边元素:
int Partition(vector<int> &arr, int l, int r) {
/*i: the number of left side of x */
int x = arr[r], i = l - 1;
for (int j = l; j < r; ++j)
if...
冒泡排序,插入排序,选择排序的c++实现
写在前面
总结一下经典的排序算法, 这次是基本排序算法, 冒泡插入和选择, 加上自己的理解与C++实现.
辅助代码
这里给出了输出数组的函数, 通过STL的vector来完成.
#include <iostream>
#include <vector>
using namespace std;
void printArray(const vector<int>& arr) {
for (size_t i = 0; i < arr.size(); ++i) cout << arr[i] << " ";
cout << endl;
}
冒泡
最为经典的排序算法, 虽然时间复...
Mysql45讲题目
以下哪些场景中适合使用 QueryCache?
电商业务,库存表
游戏业务,积分表
ERP 系统,配置表
博客系统,点赞数表
QueryCache 只适用于静态的、更新量很少的表,只有 C 满足条件。
以下哪个操作可以提升 MySQL 主实例的查询性能?
A
将 innodb_buffer_pool_size 从 10G 改成 12G
B
将 sort_buffer_size 从 1M 改成 4M
C
将 innodb_flush_log_at_trx_commit 从 1 改成 2
D
将 rpl_semi_sy...
C++实战笔记(三)异常处理
写在前面
简单总结一下C++异常处理部分(Exception).
异常只是C++为了处理错误提出的一种解决方案, 并不是唯一的一种.
异常处理
特点
异常处理的流程完全独立
异常不能被忽略, 必须被处理
异常可以用在错误码无法使用的场合中
错误类型的继承关系
总结自CPP Primer第五版
classDiagram
direction LR
Exception <-- runtime_error
Exception <-- bad_cast
Exception <-- bad_alloc
Exception <-- logic_error
runtime_erro...
共计 455 篇文章,57 页。
您是Zorch的第 个小伙伴
Hits