使用 PHP 秒速快速排序算法

基本思想:选择一个基准元素,通常选择第一个元素,通过一趟扫描,将待排序列分为两个部分,一部分比基准元素小(做数组),一部分大于等于基准元素组(右数组),此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

可以看到,这种方法是把大问题转变为小问题的方法,使用递归实现。

image

<?php
//递归函数的特点有两个
//1.要有递归出口,应该放到递归函数的最前面
//2.要有递归调用
function quick sort ($arr) {
    //递归出口判断要放在最前面
    if (count($arr) <= 1){
        return $arr;
    }
    //把第一个元素从数组中弹出去放在一个变量中
    $key = array_shift($arr);
    //把刚才弹出的第一个元素(基准元素)存到一个数组中
    $key_arr = array($key);
    //定义两个空数组,给左边和右边的数组进行初始化。
    $left_arr = array();
    $right_arr = array();
    foreach ($arr as $value){
        if($value < $key){
            $left_arr[] = $value;
        }else{
            $right_arr[] = $value;
        }
    }
    //这里就是递归调用
    return array_merge(quick_sort($left_arr), $key_arr, quick_sort($right_arr));
}

 

优化 MySQL 数据库的方法

1. 选取最实用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如“省份,性别”,最好设置为ENUM

2. 使用连接(JOIN)来代替子查询

3. 使用联合(UNION)来代替手动创建临时表

4. 事务处理

5. 锁表,优化事务处理

6. 使用外键,优化锁定表

7. 建立索引

8. 优化查询语句

PHP值传递和引用传递的区别

值传递是将变量的值复制一份,改变一个变量的值而不影响另一个变量的值。

引用传递是将变量的引用关系复制一份,改变一个变量的值另一个变量的值也会随之改变。

值传递:

形式:

[php]
$v1 = 1;
$v2 = $v1;
[/php]

含义:将变量$v1的值复制一份,然后赋值给$v2,$v1和$v2具有两相同的值,但$v1和$v2是相互独立的,互相没有关系的两个变量。

image

引用传递:

形式:

[php]
$v1 = 1;
$v2 = &$v1;
[/php]

含义:将变量$v1跟其数据之间的关系,复制一份,然后将关系应用到$v2上。此时,$v1和$v2都有了一个共同的特性:指向同一数据(区)。改变一个变量的值都会影响另一个变量的值。

image

YouTube、优酷等国内外视频网站视频下载工具 You-Get 安装说明及使用方法

You-Get是一个基于Python 3的视频下载工具。支持Youtube、Vimeo、Tumblr、优酷、哔哩哔哩、网易公开课等。

官网:https://you-get.org/

安装及使用步骤

1.Python官网:https://www.python.org/ 下载Python

2.安装 Python,注意勾选 Add Python to PATH (下图我已经安装过)

Continue reading YouTube、优酷等国内外视频网站视频下载工具 You-Get 安装说明及使用方法