一轉眼2月過去了,秋招快結束了,趁現在這段時間對之前面試中問到的排序演算法做乙個小結,怕背熟練的又忘記了。。。
#include#include#include#include#includeusing namespace std;
void maopao(vector&a)//時間複雜度o(n^2),空間複雜度o(1),穩定排序
} }}void maopao1(vector&a)//變種1 設立標誌位,當標誌位在一輪迴圈中不變時說明陣列已經有序
} if (!flag) break; }}
void kuaipai(vector&a,int left,int right)//遞迴版本,時間複雜度o(nlongn),最好情況o(n),最差情況o(n^2),輔助情況(o(n)) 非穩定排序
if (i < j) a[i++] = a[j];
while (i < j&&a[i] < k)
if (i < j) a[j--] = a[i];
} a[i] = k;
kuaipai(a, left, i-1);
kuaipai(a, i + 1, right);
}int post(vector&a, int left, int right)//非遞迴版本
if (i < j) a[i++] = a[j];
while (i < j&&a[i] < k)
if (i < j) a[j--] = a[i];
} a[i] = k;
return i;
}void kuaipai1(vector&a,int i ,int j)
if (k + 1 < r)
}}void xuanpai(vector&a)//時間複雜度o(n^2),額外空間o(1),不穩定排序
} if(min!=i)swap(a[i], a[min]); }}
void charu(vector&a)//直接插入排序,時間複雜度o(n^2),空間複雜度o(1),穩定排序 }}
void xier(vector&a)//空間複雜度o(nlongn)~o(n^2),空間複雜度o(1),不穩定排序
} }}void merge(vector&a, int l, int mid, int r)
else
} while (i <= mid)
while (j <= r)
t = 0;
while (t < (r - l + 1)) //a[l+t]=temp[t++] 陣列下標訪問越界?
}void guibin(vector&a,int l,int r)//時間複雜度o(nlogn),空間複雜度o(n),穩定排序
}void adjustheap(vector&a, int i, int length)
if (a[k] > temp)//如果子節點的值大於父節點,將子節點的值賦給父節點
else break;
} a[i] = temp;
}void duipai(vector&a)//時間複雜度o(nlogn),空間複雜度o(1),不穩定排序
//調整堆結構+交換堆頂元素與末尾元素
for (int j = a.size() - 1; j > 0; j--) }
int main(void)
; duipai(a);
for (int i = 0; i < a.size(); i++)
cout << endl;
system("pause");
return 0;
}
以上**均在vs2015下跑過,親證可用。 Python學習小結 一點點
1 函式的定義 def 函式名 函式內容 2 函式的呼叫 函式名 如果是沒有定義的函式,呼叫會報錯 3 函式中的返回值 return 返回括號中的值python預設返回元組,也可以返回列表 4 形參和實參 形式引數 parameter 函式定義時小括號裡的引數 實際引數 argument 呼叫函式是...
深度學習的一點點一點點知識
我們手裡有大量的x和y,求權重訓練的是權重資料樣本 xwy 身高0體重0 血型0.3 腳指頭0.8 一組x計算出對應的乙個y 計算過程是w 下面的就是最基礎的公式 我們已知資料是大量的x和y 希望通過 西塔 來獲得w 我們的學習才剛剛開始,首先需要理解的是與門 x1x2y0 0001 0100 11...
一點點感想
寫在這喧囂與寂寞的世界 今天我與chen在風初停的早上跑去借書,借了安妮的 清醒記 兩本三毛的書和一本yilan的旅行與味蕾的書。從圖書館出來,風似乎有些冷,想到又要到那陰冷的梅花館坐在又涼又硬的椅子上上一節乏味的數學課我們便都不約而同的想到了逃課。帶著心裡的負罪感我們躲進八食取暖。無意中我們嘗到了...