常見算法面試題


前言

正文

1、解釋算法的時間復雜度?

算法的時間復雜度表示程序運行完成所需的總時間,它通常用大O表示法來表示。

2、解釋二分法檢索如何工作?

在二分法檢索中,我們先確定數組的中間位置,然后將要查找的值與數組中間位置的值進行比較,若小於數組中間值,則要查找的值應位於該中間值之前,依此類推,不斷縮小查找范圍,直至得到最終結果。

代碼拓展,二分法查找
def BinarySearch(t,x):
    t.sort() #對列表進行排序,列表是有序的,是二分法的前提
    low = 0;
    high = len(t)-1;
    while low < high:
        mid = (low+high)/2;
        if t[mid]<x:
            low=mid+1;
        elif t[mid]>x:
            high = mid-1;
        else :
            return mid
    return Non

3、解釋什么是推排序?

堆排序可以看成是選擇排序的改進,它可以定義為基於比較的排序算法。它將其輸入划分為未排序和排序的區域,通過不斷消除最小元素並將其移動到排序區域來收縮未排序區域。

4、解釋什么是快速排序算法?

(1)通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列;

(2)空間復雜度為O(log2n);

(3)時間復雜度比較復雜,最好的情況是O(n),最差的情況是O(n2),所以平時說的O(nlogn),為其平均時間復雜度。

5、解釋插入排序算法的空間復雜度是多少?

插入排序是一種就地排序算法,這意味着它不需要額外的或僅需要少量的存儲空間。對於插入排序,它只需要將單個列表元素存儲在初始數據的外側,從而使空間復雜度為O(1);

6、解釋什么是“哈希算法”,它們用於什么?

“哈希算法”是一個哈希函數,它使用任意長度的字符串,並將其減少為唯一的固定長度字符串。它用於密碼有效性、消息和數據完整性以及許多其他加密系統;

7、解釋如何查找鏈表是否有循環?

要知道鏈表是否有循環,我們將采用兩個指針的方法;如果保留兩個指針,並且在處理兩個節點之后增加一個指針,並且在處理每個節點之后,遇到指針指向同一個節點的情況,這只有在鏈表有循環時才會發生。

8、解釋什么是基數排序算法?

基數排序又稱“桶子法”,是通過比較數字將其分配到不同的“桶里”來排序元素的。它是線性排序算法之一。

9、解釋什么是遞歸算法?

遞歸算法是一個解決復雜問題的方法,將問題分解成較小的子問題,直到分解的足夠小,可以輕松解決問題為止。通常,它涉及一個調用自身的函數。

 10、解釋什么是冒泡排序算法?

冒泡排序算法也稱為下沉排序;在這種類型的排序中,要排序的列表的相鄰元素之間互相比較;如果它們按順序排列錯誤,將交換值並以正確的順序排列,直到最終結果“浮”出水面。

11、解釋什么是哈希算法?

參考資料

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM