最大數演算法
① 寫出一個求有限整數列中的最大值的演算法。
解:演算法如下: 第一步:先假定序列中的第一個整數為「最大值」; 第二步:將序列中的下一個整數與「最大值」比較,如果它大於此「最大值」,這時就假定「最大值」是這個扒滾整數; 第三皮斗步:如果序列中還燃此磨有其他整數,重復第二步; 第四步:在序列中一直到沒有可比的數為止,這時假定的 「最大值」就是這個序列中的最大值。 |
② 設計演算法找出三個數中的最大值
有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、如何選擇演算法
第一首先要保證演算法的正確性
一個演算法對其每一個輸入的實例,都能輸出正確的結果並停止,則稱它是正確的,我們說一個正確的演算法解決了給定的計算問題。不正確的演算法對於某些輸入來說,可能根本不會停止,或者停止時給出的不是預期的結果。然而,與人們對不正確演算法的看法想反,如果這些演算法的錯誤率可以得到控制的話,它們有時候也是有用的。但是一般而言,我們還是僅關注正確的演算法!
第二分析演算法的時間復雜度
演算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出演算法的好壞。
③ 請問:文字說明求一維數組中最大值的演算法
首先,在數組中輸入n個數字,假設第一個數為最大值,將其與後面的數值一一進行比較,當遇到最大值時記錄其坐標,將其與第一個數進行交換,這樣就能找到一維數組中最大值了 ,下面是程序
#include<stdio.h>
#define NUM 10
void main()
{
int a[NUM];
int i,j,k,t;
printf("input %d numbers\n",NUM);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
//令第一個數為最小數 a[k]
for(j=0;j<NUM-1;j++)
{
k=j;
for(i=j+1;i<NUM;i++)
if(a[k]>a[i])
k=i;
if(k!=j)
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
printf("%5d",a[9]);
printf("\n");
}
這是選擇排序法,它的效率高點
④ 設計一個演算法,求三個數中的最大數
告訴你思路:
假設這三個數分別為:a、b、c
設最大的數為:max
如果 a >= b,則 max=a,反之 max=b;
如果 max >=c ,則 max=max ,反之 max=c;
這樣三個數中最大的數就是max 了。