演算法 兩道百度筆試題

2021-09-22 06:13:35 字數 1942 閱讀 6373

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

;}}}

o(n)

和o(1)。

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

//

演算法分開奇偶數

void

insertsort1(

int*

a ,int

size)

if(a[i]%2

==0&&plus

<0)

}if(minus

>=0&&

plus

>=0)

a[plus]

=tmp;

minus=-1

;}}}

測試**如下:

//

測試**

intmain() ;

intsize

=sizeof

(a)/

sizeof

(int

);cout

<<

"-----------------------演算法分開正負數-----------------------

"<<

endl;

for(

inti=0

;i<

size;i++)

cout

<<

endl;

insertsort(a,size);

for(

inti=0

;i<

size;i++)

cout

<<

endl;

cout

<<

endl;

cout

<<

"-----------------------演算法分開奇偶數-----------------------

"<<

endl;

intb=;

ints

=sizeof

(b)/

sizeof

(int

);for

(inti=

0;i<

s;i++

)cout

<<

endl;

insertsort1(b,s);

for(

inti=0

;i<

s;i++

)getchar();

return0;

}

執行結構截圖:

部落格:

演算法 兩道百度筆試題

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