1. 程式人生 > 其它 >MySQL之senior(十一)——索引

MySQL之senior(十一)——索引

演算法

選擇

演算法是由若干條指令組成的有窮序列,且要滿足以下四條性質:

  1. 輸入
  2. 輸出
  3. 確定性
  4. 有限性

程式與演算法不同,可以不滿足演算法性質的有限性.


填空 堆排序時間複雜度


選擇

  • 可操作性最好且最有實際價值的是最壞情況下的時間複雜性
  • 根據符號 O 的定義,用它評估演算法的複雜性,得到的只是當規模充分大時的一個上界.上界的階越低,則評估越精確,結果就越有價值.
  • 用Ω評估演算法的複雜性得到的只是該複雜性的一個一個下界.這個下界的階越高,則評估越精確,結果就越有價值.

填空

  1. 回溯法:深度優先
  2. 分支限界法:廣度優先

哪一個不能用貪心演算法解決.


分析 最長公共子序列問題

void LCSLength(int m, int n, char *x, char *y, int **c, int **b)
{
    int i, j;
    for (i = 1; i < m; i++)
    {
        c[i][0] = 0; //置第0列為0值
    }
    for (i = 1; i < n; i++)
    {
        c[0][i] = 0; //置第0行為0值
    }
    for (i = 1; i < m; i++)
    {
        for (j = 1; j < n; j++)
        {
            if (x[i] == y[j])
            {
                c[i][j] = c[i - 1][j - 1] + 1; //當x[i]=y[j],陣列c[i][j]為左上角+1;
                b[i][j] = 1; // 當x[i]=y[j]時,陣列b的b[i][j]置1
            }
            else if (c[i - 1][j] >= c[i][j - 1])
            {
                c[i][j] = c[i - 1][j];
                b[i][j] = 2;
            }
            else
            {
                c[i][j] = c[i][j - 1];
                b[i][j] = 3;
            }
        }
    }
}