前言
正文
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、解釋什么是哈希算法?
參考資料