Python面試筆記四

數據庫

 

一、將name字段添加索引算法

create index index_emp_name on student(name);

二、查詢女生中數學成績最高的分數數據庫

select max(score) from student where sex='' and subject='數學'

三、查詢男生中平均成績最高的姓名json

select name,avg(score) from student where sex='' group by name having avg(score) >= all(select avg(score) from student where sex='' group by name)

 算法

1.選擇排序:不穩定,時間複雜度 O(n^2)數組

選擇排序的基本思想是對待排序的記錄序列進行n-1遍的處理,第i遍處理是將L[i..n]中最小者與L[i]交換位置。這樣,通過i遍處理以後,前i個記錄的位置已是正確的了。函數

2.插入排序:穩定,時間複雜度 O(n^2)post

插入排序的基本思想是,通過i-1遍處理後,L[1..i-1]己排好序。第i遍處理僅將L[i]插入L[1..i-1]的適當位置,使得L[1..i] 又是排好序的序列。要達到這個目的,咱們能夠用順序比較的方法。首先比較L[i]和L[i-1],若是L[i-1]≤ L[i],則L[1..i]已排好序,第i遍處理就結束了;不然交換L[i]與L[i-1]的位置,繼續比較L[i-1]和L[i-2],直到找到某一個位置j(1≤j≤i-1),使得L[j] ≤L[j+1]時爲止。圖1演示了對4個元素進行插入排序的過程,共須要(a),(b),(c)三次插入。url

3.冒泡排序:穩定,時間複雜度 O(n^2)spa

冒泡排序方法是最簡單的排序方法。這種方法的基本思想是,將待排序的元素看做是豎着排列的「氣泡」,較小的元素比較輕,從而要往上浮。在冒泡排序算法中咱們要對這個「氣泡」序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。若是發現兩個相鄰元素的順序不對,即「輕」的元素在下面,就交換它們的位置。顯然,處理一遍以後,「最輕」的元素就浮到了最高位置;處理二遍以後,「次輕」的元素就浮到了次高位置。在做第二遍處理時,因爲最高位置上的元素已經是「最輕」元素,因此沒必要檢查。通常地,第i遍處理時,沒必要檢查第i高位置以上的元素,由於通過前面i-1遍的處理,它們已正確地排好序。code

4.堆排序:不穩定,時間複雜度 O(nlog n)blog

堆排序是一種樹形選擇排序,在排序過程當中,將A[n]當作是徹底二叉樹的順序存儲結構,利用徹底二叉樹中雙親結點和孩子結點之間的內在關係來選擇最小的元素。

5.歸併排序:穩定,時間複雜度 O(nlog n)

設有兩個有序(升序)序列存儲在同一數組中相鄰的位置上,不妨設爲A[l..m],A[m+1..h],將它們歸併爲一個有序數列,並存儲在A[l..h]。

6.快速排序:不穩定,時間複雜度 最理想 O(nlogn) 最差時間O(n^2)

快速排序是對冒泡排序的一種本質改進。它的基本思想是經過一趟掃描後,使得排序序列的長度能大幅度地減小。在冒泡排序中,一次掃描只能確保最大數值的數移到正確位置,而待排序序列的長度可能只減小1。快速排序經過一趟掃描,就能確保某個數(以它爲基準點吧)的左邊各數都比它小,右邊各數都比它大。而後又用一樣的方法處理它左右兩邊的數,直到基準點的左右只有一個元素爲止。

HTTP協議的請求方式

requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs)
 
# 以上方法均是在此方法的基礎上構建
requests.request(method, url, **kwargs)

棧(Stack)和隊列(Queue)

兩種操做受限的線性表:棧的插入和刪除操做只容許在表的尾端進行(在棧中成爲「棧頂」),知足「FIFO:First In Last Out」;隊列只容許在表尾插入數據元素,在表頭刪除數據元素,知足「First In First Out」;

棧與隊列的相同點:

1.都是線性結構。

2.插入操做都是限定在表尾進行。

3.均可以經過順序結構和鏈式結構實現。、

4.插入與刪除的時間複雜度都是O(1),在空間複雜度上二者也同樣。

5.多鏈棧和多鏈隊列的管理模式能夠相同。

棧與隊列的不一樣點:

1.刪除數據元素的位置不一樣,棧的刪除操做在表尾進行,隊列的刪除操做在表頭進行。

2.應用場景不一樣;常見棧的應用場景包括括號問題的求解,表達式的轉換和求值,函數調用和遞歸實現,深度優先搜索遍歷等;常見的隊列的應用場景包括計算機系統中各類資源的管理,消息緩衝器的管理和廣度優先搜索遍歷等。

3.順序棧可以實現多棧空間共享,而順序隊列不能。

假設一維數組中有n個數組元素,則讀取第i個數組元素的平均時間複雜度爲O(1);

相關文章
相關標籤/搜索