1、程序切換需要注意哪些問題?
儲存處理器pc暫存器的值到被中止程序的私有堆疊; 儲存處理器psw暫存器的值到被中止程序的私有堆疊; 儲存處理器sp暫存器的值到被中止程序的程序控制塊;
儲存處理器其他暫存器的值到被中止程序的私有堆疊; 自待執行程序的程序控制塊取sp值並存入處理器的暫存器sp; 自待執行程序的私有堆疊恢復處理器各暫存器的值;
自待執行程序的私有堆疊中彈出psw值並送入處理器的psw; 自待執行程序的私有堆疊中彈出pc值並送入處理器的pc。
2、輸入乙個公升序陣列,然後在陣列中快速尋找兩個數字,其和等於乙個給定的值。
這個程式設計之美上面有這個題目的,很簡單的,用兩個指標乙個指向陣列前面,乙個指向陣列的後面,遍歷一遍就可以了。
3、有乙個名人和很多平民在一塊,平民都認識這個名人,但是這個名人不認識任何乙個平民,任意兩個平民之間是否認識是未知的,請設計乙個演算法,快速找個這個人中的那個名人。 已知已經實現了乙個函式 bool know(int a,int b) 這個函式返回true的時候,表明a認識b,返回false的時候表明a不認識b。
思路:首先將n個人分為n/2組,每一組有2個人,然後每個組的兩個人呼叫這個know函式,假設為know(a,b),返回true的時候說明a認識b,則a肯定不是名人,a可以排除掉了,依次類推,每個組都呼叫這個函式依次,那麼n個人中就有n/2個人被排除掉了,資料規模將為n/2。同理在剩下的n/2個人中在使用這個方法,那麼規模就會將為n/4,這樣所有的遍歷次數為n/2+n/4+n/8+........ 這個乙個等比數列,時間複雜度為o(n)。
4、有一類陣列,例如書序[1,2,3,4,6,8,9,4,8,11,18,19,100] 前半部分是是乙個遞增陣列,後面乙個還是遞增陣列,但整個陣列不是遞增陣列,那麼怎麼最快的找出其中乙個數?
[cpp]view plain
copy
print?
#include
using
namespace std;
int binary_search(int* a, int low, int high, int goal) //二分查詢
return -1;
} void getnum(int *a, int len, int goal)
if(a[i] >= goal) //對前面陣列進行二分查詢
if(a[i+1] <= goal) //對後面陣列進行二分查詢
} int main(void)
; int len = 13, goal = 4;
getnum(a,len,goal);
return 0;
}
#include using namespace std;
int binary_search(int* a, int low, int high, int goal) //二分查詢
return -1;
}void getnum(int *a, int len, int goal)
if(a[i] >= goal) //對前面陣列進行二分查詢
if(a[i+1] <= goal) //對後面陣列進行二分查詢 }
int main(void)
; int len = 13, goal = 4;
getnum(a,len,goal);
return 0;
}
5、判斷乙個自然數是否是某個數的平方。當然不能使用開方運算。
方法1:
遍歷從1到n的數字,求取平方並和n進行比較。
如果平方小於n,則繼續遍歷;如果等於n,則成功退出;如果大於n,則失敗退出。
複雜度為o(n^0.5)。
方法2:
使用二分查詢法,對1到n之間的數字進行判斷。
複雜度為o(log n)。
方法3:
由於(n+1)^2
=n^2 + 2n + 1,
= ...
= 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)
注意到這些項構成了等差數列(每項之間相差2)。
所以我們可以比較 n-1, n - 1 - 3, n - 1 - 3 - 5 ... 和0的關係。
如果大於0,則繼續減;如果等於0,則成功退出;如果小於 0,則失敗退出。
複雜度為o(n^0.5)。不過方法3中利用加減法替換掉了方法1中的乘法,所以速度會更快些。
例如:3^2 = 9 = 1 + 2*1+1 + 2*2+1 = 1 + 3 + 5
4^2 = 16 = 1 + 2*1 + 1 + 2*2+1 + 2*3+1
[cpp]view plain
copy
print?
int square(int n)
if( n == 0 ) //是某個數的平方
return 1;
else
//不是某個數的平方
return 0;
}
報考NPDP,需要注意哪些問題?
產品經理國際資格認證,new product development professional npdp 由美國產品開發與管理協會 pdma 所發起,是國際公認的唯一的新產品開發專業認證,集理論 方法與實踐為一體的全方位知識體系,為公司組織層級進行規劃 決策 執行提供良好的方法體系支撐。國內自201...
選擇數控刀具需要注意哪些問題?
選擇數控刀具需要注意哪些問題?無論選擇什麼刀具首先要了解的是 被加工件的材質是什麼?用什麼工具機加工?精加工還是粗加工?有無圖紙要求?一 車刀 所有車刀都需要先了解 刀方多少?壓緊方式?安裝什麼刀片?1 外圓車刀 要求刀具的主偏角為多少度?有沒有圖紙要求?加工的材料是什麼?有沒有硬度要求?2 內孔車...
選擇IP時需要注意哪些問題
大資料時代,企業的發展離不開資料的支援,企業通過爬蟲採集獲取使用者 競爭對手等資料資訊,對獲取的資料進行分析,制定適合自己的營銷方案。而資料採集過程中少不了 ip的使用,雖然現在提供 ip服務的提供商很多,但是想要選擇合適的 ip,在選擇的時候還是要考慮到一些因素。1 首先要看一下 ip的數量 畢竟...