我要找工作之排序相關

2021-08-10 04:26:18 字數 1157 閱讀 3047

說明:題目出自牛客網,本人只是勤勞的搬運工,也是為了自己就業,所以做個小總結

1.拓撲排序

利用鄰接表時的時間複雜度為o(n+e)。解釋:若為避免重複檢測入度為零的頂點,使用棧來儲存所有入度為零的頂點。對有n個頂點和e條弧的有向圖而言,建立求各頂點的入度的時間複雜度為o(e);建零入度頂點棧的時間複雜度為o(n);在拓撲排序過程中,若有向圖無環,則每個頂點進一次棧,出一次棧,入度減一的操作在while迴圈中總共執行e次,所以總的時間複雜度為o(n+e)。

2.已知資料表a中每個元素距其最終位置不遠,為節省時間排序,應採用什麼方法排序?

解答:插入排序:如果平均每個元素離最終位置相距c個元素,則其複雜度為o(cn),一共n趟,每次比較c次;

快速排序:最好的、平均的複雜度都是o(nlog(n)),如果每次選擇的中間數都最小或最大,那就是最壞的情況,複雜度是o(n*n);所以快速排序和元素的位置沒有關係,跟選擇的中間數有關。

堆排序:複雜度一直是o(nlog(n));

直接選擇排序:跟元素位置沒有關係,都要遍歷n遍,每遍找出最小或最大數來,複雜度是o(n*n);

答案是插入排序。

3.對n個數進行排序,在各自最優條件下以下演算法複雜度最低的是

解答:

改良的氣泡排序氣泡排序  最優時間複雜度為n

4.排序穩定是指排序前後值相同的兩個數前後位置不變,直接插入、冒泡、歸併、基數排序是穩定的,其餘是不穩定的。

穩定性分析:a.起泡排序:穩定。

重複地走訪過要排序的 數列 ,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。

如果相等,沒有必要交換,所以是穩定的。

b.折半插入排序:穩定排序。

容易知道,插入排序是穩定排序,很明顯,折半插入排序,是插入排序的一種優化,所以也是穩定的。

c.簡單選擇排序:不穩定。

每次選擇後面待排序的數中的最小(最大)放入當前位置,不穩定。

d.希爾排序:不穩定。

可以看做基於一定間隔的插入排序,明顯不穩定。

e.基數排序:穩定排序。

f.堆排序:不穩定。

開始要找工作嘍!

好些天沒有寫部落格了,一方面是因為人變懶了,另乙個原因是雖然自己很多事情有看法但是隨著時間的推移慢慢發現,之前的見解都有點膚淺,很多問題沒有看到實質,有個學者說60歲之前寫書是害人,我有點受這句話的影響,覺得自己的本事還沒有到那個地步就少發表些什麼言論之類的東西,容易見笑於大方之家。實踐出真理,沒有...

牛牛找工作(排序)

題目沒有給出時間範圍,第一次寫出之後t了。題目鏈結 下面是超時做法 時間複雜度為o mn include using namespace std int n,m define ll long long typedef pair pii pair a 100005 pair b 100005 bool...

2015061205 找工作相關問題

b.公司介紹簡介 c.公司地點在 呢?d.外派,外包公司一律不考慮.e.出差公司,經常出差不考慮.偶爾出差?諮詢出差什麼時候可以回北京,最高3周,超過3周不考慮.f.是否雙休?是否週六會經常加班?g.平時一般加班到什麼時候?加班時間是否很頻繁?如果很頻繁,基本上調休的時間不會太多.h.加班怎麼處理,...