打擂台演算法c語言
① 從鍵盤輸入5個正整數,求出5個數中差值的絕對值最小的是多少c語言
使用「打擂台」的演算法,就可以實現從鍵盤輸入5個正整數,求出5個數中差值的絕對值最小的是多少。
② C語言中基本的幾種演算法有哪些越多越好!就像打擂台演算法'冒泡排序法等等...
排序演算法
冒泡排序
選擇排序
快速排序
高精度運算
存儲方法
加法運算
減法運算
乘法運算
擴大進制數
習題與練習
搜索演算法
枚舉演算法
深度優先搜索
廣度優先搜索
8數碼問題
n皇後問題
搜索演算法習題
枚舉法習題
聰明的打字員
量水問題
染色問題
跳馬問題
算24點
圖論演算法
最小生成樹演算法(Prim演算法)
單源最短路徑演算法(Dijkstra演算法)
任意結點最短路徑演算法(Floyd演算法)
求有向帶權圖的所有環
Bellman-Ford演算法
計算圖的連通性
計算最佳連通分支
計算拓撲序列
圖論演算法習題
網路建設問題
最短變換問題
挖地雷
烏托邦城市
烏托邦交通中心
動態規劃
最短路徑問題
動態規劃概念
騎士游歷問題
最長遞增子序列
合唱隊形
石子合並問題
能量項鏈
0/1背包問題
開心的金明
金明的預算方案
加分二叉樹
字串編輯距離
花瓶插花
凸多邊形三角劃分
快餐店
③ 用c #編寫程序實現打擂台法求1,2,3,4,5,6,7,8中的最大值
打擂台 演算法 ? 你說的是冒泡排序完 再取第一個值吧
④ 求C語言 輸入10個數 輸出最大值
這個問題涉及數組問題和循環語句,明確「打擂台」演算法可以快速寫出。
利用計算機在一批數中找出最大值的一般方法為:
1.將數據存入一個一維數組中,例如存入a數組中。
2.在數組中找最大值(假設用變數max存放最大數)。
(1)首先將a[0]視為最大數,即首先使max=a[0]。
(2)將除a[0]之外的其他元素(用a[i]表示)逐個與max比較,若a[i]>max,則a[i]為目前的最大數,使max=a[i]。在所有元素比較完之後,max即為最大數。
3.輸出最大數(max的值)。
具體程序為:
#include<stdio.h>
int
main()
{int
i,max,data[10];//定義3個變數
for(i=0;i<10;i++)
scanf("%d",&data[i]);
//輸入10個整數
//打擂台演算法,就是假設第一個數據是最大,並賦給max,然後看後面的數是否有
//大於max的,如果有,則將該數賦給max
,這樣始終在max中存放最大的數。
max=data[0];
for(i=1;i<10;i++)//輸入循環體
{ if(data[i]>max)
max=data[i];}
printf("\nmax
num
is:%d",max);//輸出最大數
return
0;}
(4)打擂台演算法c語言擴展閱讀:
所謂打擂台法,就是一種求最大值的方法,依次讀入數據,按先後順序存入一個變數,後讀入的數與前面讀入的數比,輸出較大的一個。
例子:
var
a,b,temp:integer;
begin
temp:=0;readln(a,b);temp:=a;
if
b>=temp
then
temp:=b,else
temp:=a;
writeln(temp);
end.
因為像打擂台的時候一個一個上,贏得留下,輸的下去,所以被稱之為打擂台法。
參考資料:打擂台法_網路
⑤ 【c語言】這段代碼這句話是什麼意思 解析也看不懂
這種方法類似於「打擂台」。設了一個最高、一個最低兩個擂台。
有若干個人逐漸依次參加打擂。
當第一人首先到達現場後,發現空無一人,於是,他占據了「最高」和「最低」擂台的擂主席位。後來,逐漸又來了第二人、第三人,……。每個人到來之後,都參與打擂,如果勝了台上的擂主,那麼新來者就替換了原有的擂主。直到最後一個人來了之後。全部參與的人就決出了所有人中的真正的最高和最低兩個擂主。
所以說,首個元素,它就是暫時的「擂主」,既是最高、也是是低。即tense[0]就是最大值、也是最小值的原因了。
⑥ c語言 輸入1~10用擂台法排序從大到小
#include <iostream>
using namespace std;
#define N 10
void MpSort(int *a,int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
a[j]=a[j]+a[j+1];
a[j+1]=a[j]-a[j+1];
a[j]=a[j]-a[j+1];
}
}
}
}
int main()
{
int i,j;
int *a=new int[N];
for(i=0;i<N;i++)
{
cin>>a[i];
}
MpSort(a,N);
for(i=0;i<N;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
//冒泡排序
//時間復雜度是 O(pow(n,2))
#include <iostream>
using namespace std;
#define N 10
void XzSort(int *a,int n)
{
int i,j,min_i,t;
for(i=0;i<n-1;i++)
{
min_i=i;
for(j=i+1;j<n;j++)
{
if(a[min_i]>a[j])
{
min_i=j;
}
}
if(min_i!=i)
{
t=a[i];
a[i]=a[min_i];
a[min_i]=t;
}
}
}
⑦ c語言問題求解
答案
①x>=0 ②x < amin
為什麼x同時賦給amin和amax?
並不是同時賦給amin和amax,每次只能執行一個if分支。對於每一次循環只能是要麼執行amax=x,要麼執行amin=x。只不過是一個while循環判斷輸入的這個數字是不是最大值或者最小值而已,這樣一次循環辦能兩個事情,方便。不可能出現一個數既比最大值要大還比最小值最小。不明白可以往下看。
解析
這個題讓找出所輸入的一組數據中的最大值和最小值。這個題的思路是使用了打擂台演算法。打擂台演算法就是可以解決最大值和最小值問題。演算法思路:默認設置所輸入的第一個數字就是最大值。其後,對於每次輸入的數字都和最大值進行比較,如果說當前值都比最大值都大了,那麼這個值就新的最大值。最小值也一樣:設置第一個數為最小值,對其後的每一個數字都和這個默認最小值進行比較,如果當前值都比最小值都還小了,那麼這個值就是新的最小值。所以會有這兩條語句:
if(x>amax)amax=x;
上面就是比較語句,對於所輸入的數值,和amax最大值比較,如果比最大值要大,就把當前值x賦予給amax,此時最大值被更新了。第二如果x比最小值都要小,就把當前x賦予給amin,此時最小值被更新了。所以這里並不是說x同時賦給了amax和amin,這個兩個if語句每次循環只能走一個。如果還不明白自己可以拿筆拿紙畫一畫,一畫就明白。
if(x<amin)amin=x;
⑧ 用「打擂台法」輸出10個數最大值及第幾個數,c語言。
#include<stdio.h>
#include<windows.h>
int main()
{
int arr[10] = {1,5,6,3,4,2,4,5,3,4};//創建一個數組,然後放入10個數
int max = 0;//定義一個數max,用來放打擂後的擂主
int i = 0;//定義一個數i,循環來遍歷數組
int num = 0;//定義第幾個數
while (i <= 9) {
if (arr[i] > max) {
max = arr[i];//當打擂成功時,將較大數賦值給max,作為新的擂主
num = i;
}
i++;//每次循環結束後給i加1,達到數組遍歷的目的
}
printf("這10個數中最大的數為:%d,排在第%d位", max,num+1);
system("pause");
return 0;
}
(8)打擂台演算法c語言擴展閱讀:
if(max(m,a[i])>m),比較條件錯誤。
此時的比較條件,應該是擂主的數字和當前循環的數字進行比較,如果當前循環的數字比較大,則把擂主數字替換掉。反之,繼續循環數字比較。
max(m,a[i])>m,先把m和a[i]比較一次,再把此次的結果和m比較一次。比較的動作進行了兩次,是不對的。
if...else...:
if 和 else 是兩個新的關鍵字,if 意為「如果」,else 意為「否則」,用來對條件進行判斷,並根據判斷結果執行不同的語句。總結起來,if else的結構為:
if(判斷條件){
語句塊1
}else{
語句塊2
}
⑨ 數據結構中的演算法怎樣轉化為可執行的c語言程序啊
1、Fibonacci數列演算法:Fibonacci數列有如下特點:第1,2兩個數的值為1,從第3個數開始,該數是其前面兩個數之和。
⑩ 定義一個整形數組,從鍵盤輸入10個數據,使用打擂台演算法求出數組中最大元素及其下標
打擂台演算法,這個提法比較新鮮
#include<stdio.h>
#define N 10
void main() { int a[N],maxi,i;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
maxi=0; for ( i=1;i<N;i++ ) if ( a[i]>a[maxi] ) maxi=i;
printf("最大值%d,下標%d\n",a[maxi],maxi);
}