演算法 兩道百度筆試題

2022-04-08 08:29:56 字數 858 閱讀 9695

o(n)和o(1)。

其實開始的時候我也是一頭霧水,在紙上畫畫之後發現,其實就是一道變形的插入排序。幸運的是這裡不需要比較大小,要比較大小的話時間複雜度是o(n2),只用判斷正負,那時間複雜度就只要o(n)了。

如:-3,1,2,-1,-3,4。其實就是把正數後面的第乙個負數(如-1)插到第乙個正數(1)的前面,負數之間的每個正數(1,2)後移一位,就這麼簡單。時間複雜度剛好為o(n),控制項複雜度為o(1)。

//演算法分開正負數

void insertsort(int*a ,int size)

if(a[i]>0&& plus<0)

}if(minus>=0&& plus>=0)

a[plus]=tmp;

minus=-1;}}

}

其實這兩道筆試題沒有什麼區別,要說有區別就是看你是否理解。

//演算法分開奇偶數

void insertsort1(int*a ,int size)

if(a[i]%2==0&& plus<0)

}if(minus>=0&& plus>=0)

a[plus]=tmp;

minus=-1;}}

}

測試**如下:

//測試**

int main() ;

int size=sizeof(a)/sizeof(int);

cout<

執行結構截圖:

演算法 兩道百度筆試題

o n 和o 1 其實開始的時候我也是一頭霧水,在紙上畫畫之後發現,其實就是一道變形的插入排序。幸運的是這裡不需要比較大小,要比較大小的話時間複雜度是o n2 只用判斷正負,那時間複雜度就只要o n 了。如 3,1,2,1 3,4 其實就是把正數後面的第乙個負數 如 1 插到第乙個正數 1 的前面,...

演算法 兩道百度筆試題

o n 和o 1 其實開始的時候我也是一頭霧水,在紙上畫畫之後發現,其實就是一道變形的插入排序。幸運的是這裡不需要比較大小,要比較大小的話時間複雜度是o n2 只用判斷正負,那時間複雜度就只要o n 了。如 3,1,2,1 3,4 其實就是把正數後面的第乙個負數 如 1 插到第乙個正數 1 的前面,...

百度指令碼筆試題兩道

1 寫指令碼實現,可以用shell perl等。在目錄 tmp下找到100個以abc開頭的檔案,然後把這些檔案的第一行儲存到檔案new中。2 寫指令碼實現,可以用shell perl等。把檔案b中有的,但是檔案a中沒有的所有行,儲存為檔案c,並統計c的行數。解答思路 1 覺得用shell更好一些,如...