7. 請寫出以下 C 語言程式碼執行結果? _____607e28f78ef83.jpg

詳解 (共 2 筆)

  鐘小綾
 鐘小綾
詳解 #4680239
2021/04/27
5
(共 3 字,隱藏中)
前往觀看
Ted Lee
Ted Lee
詳解 #4915871
2021/07/18

誰能看懂到底是 1 还是l (L)?

#include <iostream>


using namespace std;


int arr[] = {2, 1, 6, 3, 5, 4, 8, 7, 9}, B[9], len;


int T(int w) {

int m, l=0, r=len-1;

while (l <= r) {

m = (l+r)/2;

if (B[m] > w) r = m-l;

else if (B[m] < w) l = m+1;

else return m; 

}

return (B[m]>w) ? m : m+1;

}


int S(int n) {

len = 1;

B[0] = arr[0];

int i, pos = 0;

for (i=1; i<n; ++i) {

if (arr[i] > B[len-1]) {

B[len] = arr[i];

++len;

}

else {

pos = T(arr[i]);

B[pos] = arr[i];

}

}

return len;

}


int main() {

printf("%d\n", S(9));

return 0;

}