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更好一些,如...