比較數字演算法
㈠ 求一組毫無規律數字的最大值、最小值的數學演算法。
以最大值為例,先令第一個數為最大值a
然後用第二個數與a相比,大於a,a=第二個數,否則,最大值還是第一個數,然後再用第3個數進行同樣的比較過程,直至這一堆數字比完,一個循環下來a便是最大值。
㈡ 數據快速比較演算法
你想知道每位相不相同嗎?我看你這是二級制數吧,如果是二進制可以用位運算的異或,相同為0,不同為1,這是最快的了,時間復雜度為O(1),掩碼的操作都是用位運算的,不用什麼查找。
如果你不知道位運算是啥,還是自己網路一下吧
㈢ 設計演算法找出三個數中的最大值
有a,b,c三個數,比較它們的大小
方法一,按順序兩兩比較,取較大的
if (a > b) {
max = a;
} else {
max = b;
}
if (max < c) {
max = c;
}方法二,假設第一個是最大的,與後面兩個數進行比較,將較大的值賦給max
int max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
拓展資料
1、什麼是演算法
演算法(algorithm):就是定義良好的計算過程,他取一個或一組的值為輸入,並產生出一個或一組值作為輸出。簡單來說演算法就是一系列的計算步驟,用來將輸入數據轉化成輸出結果。
mark:我們可以把所有的演算法想像為一本「菜譜」,特定的演算法比如菜譜中的的一道「老醋花生米」的製作流程,只要按照菜譜的要求製作老醋花生米,那麼誰都可以做出一道好吃的老醋花生米。so,這個做菜的步驟就可以理解為:「解決問題的步驟」
2、演算法的意義
假設計算機無限快,並且計算機存儲容器是免費的,我們還需要各種亂七八糟的演算法嗎?如果計算機無限快,那麼對於某一個問題來說,任何一個都可以解決他的正確方法都可以的!
當然,計算機可以做到很快,但是不能做到無限快,存儲也可以很便宜但是不能做到免費。
那麼問題就來了效率:解決同一個問題的各種不同演算法的效率常常相差非常大,這種效率上的差距的影響往往比硬體和軟體方面的差距還要大。
3、如何選擇演算法
第一首先要保證演算法的正確性
一個演算法對其每一個輸入的實例,都能輸出正確的結果並停止,則稱它是正確的,我們說一個正確的演算法解決了給定的計算問題。不正確的演算法對於某些輸入來說,可能根本不會停止,或者停止時給出的不是預期的結果。然而,與人們對不正確演算法的看法想反,如果這些演算法的錯誤率可以得到控制的話,它們有時候也是有用的。但是一般而言,我們還是僅關注正確的演算法!
第二分析演算法的時間復雜度
演算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出演算法的好壞。
㈣ 設計從5個不同的數中找出最大數的演算法,並畫出流程圖.
略 演算法步驟如下: (1)輸入 , , , , ; (2)將 與 中的大數記作b; (3)將b與 比較大小,大數記作b; (4)將b與 比較大小,大數記作b; (5)將b與 比較大小,大數記作b; (6)輸出b.流程圖如圖: 在上述的3個關鍵步驟中,每一步都要與上一步中得到的最大數b進行比較,得出新的最大數,將其也記作b.b可以取不同的值.
㈤ 求一個演算法,,,返回一個數組中,比較接近比較數字的值,
如果沒有排序,就土一點,掃描一遍所有值。加個變數記錄最差距和最差距所在位置。
如果已經排序,可以二分查找,速度快。
private float getNear(float[] array, float target)
{
if (array.Length == 0) return -1;
if (array.Length == 1) return 0;
int min = 0;
int max = array.Length - 1;
int mid = (int)(min + max) / 2;
while (max - min > 1 )
{
if (target == array[mid] ) return mid;
if (target < array[mid]) max = mid;
if (target > array[mid]) min = mid;
mid = (int)(min + max) / 2;
}
return array[max] - target < target - array[min] ? max : min;
}
㈥ 比較兩個數字數組中相同的數字,寫出O(n)演算法
void main(){
int p1[10]={...},p2[10]={...};
int p1_max = p1[0];
int p1_min = p1[0];
int p2_max = p2[0];
int p2_min = p2[0];
int j = 0,i = 0;
int temp[10];//保存輸出相等的數字
for(i =1 ;i < 10 ;i++){
if(p1[i]>p1_max){
p1_max = p1[i];//求出p1數組最大值
p1max_xiaobiao = i;
}
if(p1[i]<p1_min){
p1_min = p1[i];//求出p1數組最小值
p1min_xiabiao =i;
}
}
for( i =1 ;i < 10 ;i++){
if(p2[i]>p2_max){
p2_max = p2[i];//求出p2數組最大值
p2max_xiao = i;
}
if(p2[i]<p2_min){
p2_min = p2[i];//求出p2數組最小值
p2min_xiabiao = i;
}
}
if(p1_min>p2_max || p2_min>p1_max){
printf("沒有相等的數字");
}else if(p1_min>p2_min&&p1_max<p2_max){ //p1屬於p2
for(int j = 0, i = p1min_xiabiao;i <= p1max_xiabiao;i++){
if(p1[i] == p2[i]){
temp[j] = p1[i];
j++;
}
}
printf("輸出數組temp");//這里省略
}else if(p1_min<p2_min&&p1_max>p2_max){//p2屬於p2
for(j = 0, i = p2min_xiabiao;i <= p2max_xiabiao;i++){
if(p1[i] == p2[i]){
temp[j] = p1[i];
j++;
}
}
printf("輸出數組temp");//這里省略
}else{//叫什麼忘了
if(p1_min>p2_min){//從p1_min開始到p2_max執行循環
for(j = 0,i = p1min_xiabiao;i <= p2max_xiabiao;i++){
if(p1[i] == p2[i]){
temp[j] = p1[i];
j++;
}
}
printf("輸出數組temp");//這里省略
}else{//從p2_min開始到p1_max執行循環
for(j = 0,i = p2_min;i <= p1max_xiabiao;i++){
if(p1[i] == p2[i]){
temp[j] = p1[i];
j++;
}
}
printf("輸出數組temp");//這里省略
}
}
}
//沒調試過不知行不行,而且寫的太爛
㈦ 字元9和數字9如何比較大小
答:字元9和數字9比較大小方法如下:把數字9看成一個字元串,再與字元串9比較大小。對於兩個字元串,從左往右逐個比較字元的ASC碼的大小,如果相同,就比較下一個字元,直到出現不同的字元為止,出現ASC碼大的字元串為大字元串,反之為小字元串;或者一個字元串的字元已經全部比較完,而另一個還有字元,則先比較完的字元串是小字元串。這個過程一般編程語言都有這個功能,可自動完成。
㈧ 數字演算法問題
首先想問下LZ 1個問題:
1.LZ第一次提問么?
以前研究過,現在來解答LZ:
2 1+1; 0+2
3 1+1+1; 1+2; 0+3
4 1+1+1+1; 1+1+2; 1+3; 2+2; 0+4
5 1+1+1+1+1 1+1+1+2; 1+1+3; 1+2+2; 1+4; 2+3; 0+5
由以上規律可以看出,除了本身劃分為0+本身外,其他每個劃分都至少為兩項劃分。人為約定下:「所有劃分中的數按升序排列」。則劃分N和劃分N-1之間存在的關系如下:
1、所有N-1的劃分式前+1都是N的劃分式(比如:1+1 =>1+ 1+1);
2、比較所有N-1劃分式,如果在一個劃分里「第一個數<第二個數」(上面排序的目的在此),則把第一個數的值加1,然後成為N的劃分式(比如:1+2 => 2+2)。
---------------------------------------------------------------------
本人不善編程,想要源代碼也沒,希望能幫助LZ~
㈨ 關於數字的演算法
2,33,34543,35214,45435,要返回的數字就是34543,35214,45435
算一下加權平均X 然後給個范圍Y 所要的數在X的Y領域內輸出
這個是主觀題,你感覺他幾位算長,那就給它個最低值,讓在超出這個值的數都輸出就行
㈩ 怎樣比較兩個數的大小
1、整數的大小比較:位數不相同時,位數多的數大;位數相同時,從最高位看起,相同數位上的數大的數大。
2、小數的大小比較:先比較兩個數的整數部分,整數部分大的那個數就大;整數部分相同時,看它們的小數部分,從高位看起,依數位比較,相同數位上的數大的那個數就大。
3、分數的大小比較:分母相同的分數,分子大的分數大;分子相同的分數,分母小的分數大;分母不同的分數,先通分在比較。
(10)比較數字演算法擴展閱讀:
整數就是像-3,-2,-1,0,1,2,3,10等這樣的數。
分數代表整體的一部分,或更一般地,任何數量相等的部分。分數是一個整數a和一個正整數b的不等於整數的比。
小數,是實數的一種特殊的表現形式。所有分數都可以表示成小數,小數中的圓點叫做小數點,它是一個小數的整數部分和小數部分的分界號。