數據結構與算法----Java實現(第一章 算法的概述)

第一章算法的概述
1.什麼是算法
算法是模型分析的一組可行的、確定的和有窮的規則(解題步驟)
2.算法的特徵
有窮性、確切性、輸入、輸出、可行性
3.常用算法
遞推、遞歸、窮舉、貪婪、動態規劃、迭代等
4.算法的起源
《周髀算經》
5.歐幾里得算法又稱“輾轉相除法”
6.第一個公認的程序員 “Ada Byron”
7.算法的分類
(1)應用領域
①基本算法
②數據結構相關算法
③幾何算法
④圖論算法
⑤規劃算法
⑥數值分析算法
⑦加解密算法
⑧排序算法
⑨查找算法
⑩並行算法
⑪數論算法
(2)確定性
①確定性算法 結果唯一
②非確定性算法 多值性
(3)算法思路
①遞推算法
②遞歸算法
③窮舉算法
④貪婪算法
⑤分治算法
⑥動態規劃算法
⑦迭代算法
8.算法與公式的關係
公式是一種高精簡的算法,算法不是公式,比公式更爲複雜.
9.算法和程序的關係
程序設計語言是算法實現的一種形式
10.算法與數據結構的關係
①數據結構是數據的組織形似,可以用來表徵特定的對象數據,比如:數組,結構體,指針…
②數據結構是算法實現的基礎
③數據結構 + 算法 + 程序設計語言 = 程序
11.算法的表示(描述)
①自然語言 :low
②流程圖 :順序、分支、循環
③N-S圖:又稱”盒圖“”CHARPIN圖“
④僞代碼:不能在計算機上運行
12.算法的性能評價
①時間複雜度 + 空間複雜度 = 算法複雜度
②時間複雜度:程序執行時間越短,算法越好
③空間複雜度:程序佔用存儲空間 + 程序運行中消耗的存儲空間
13.算法實例
(1)查找數字算法
題目要求:程序隨機生成一個20個整數的數組,輸入要查找的數據,找到時打印在數組中的位置,爲找到打印未找到
算法實現:

import java.util.Random;
import java.util.Scanner;

public class SearchNum {
    //生成一個長度爲20的隨機數組(0-100),輸入一個數字,存在打印位置,不存在打印不存在
    static int N = 20;

    public static void main(String[] args) {
        //1.生成一個長度爲20的隨機數組(0-100)
        int[] ints = new int[N];
        Random random = new Random();

        for (int i = 0; i < N; i++) {
            ints[i] = random.nextInt(101);
            System.out.print(ints[i] + " ");
        }

        //輸入一個數字,存在打印位置,不存在打印不存在
        Scanner scanner = new Scanner(System.in);
        System.out.println("輸入要查找的數字");
        int num = scanner.nextInt();
        int i = 0;
        for (int anInt : ints) {
            i++;
            if (num == anInt) {
                System.out.println("第" + i + "個");
                break;
            }
            if (i == ints.length) {
                System.out.println("未找到");
            }
        }

    }
}

14.算法的新進展
①並行運算:
劃分法、分治法、平衡樹法、倍增法/指針跳躍法、流水線法、破對稱法
②遺傳與進化法
遺傳算法、進化算法
③量子算法
Shor算法、Grove搜索算法、Hogg搜索算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章