當前位置:首頁 » 編程語言 » c語言中什麼叫擂台法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中什麼叫擂台法

發布時間: 2022-04-18 15:58:08

A. 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;
}
}
}

B. c語言「打擂台」演算法思想及應用場合

使用數組是最為簡便高效的辦法,可以處理成千上萬的數據。打擂台演算法,可以用偽代碼描述如下:
(1) 確定一個擂主(最簡便的辦法就是首個到場的即為擂主);
(2) 挑戰者上台;
(3) 擂主和挑戰者比較;

(4) 挑戰者勝的話,挑戰者做擂主,否則擂主衛冕(不用更改);
(5) 重復執行(2)~(4) 步驟,直到最後一個挑戰者;
(6) 輸出最後的擂主。
#include
#define N 10
int main()
{ int a[N],max,i;
for ( i=0;i<N;i++ )
scanf("%d",&a[i]);
max=a[0];
for (i=1;i<N;i++)
if (a[i]>max)max=a[i];
printf("最大值=%d ",max);
return 0;
}

C. c語言中,運用指針,從鍵盤輸入10個整數,求出其中最小值

C語言程序如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void input(int* p) {

for (int i = 0; i < 10; ++i, ++p) {

printf("請輸入第%d個數的值 ", i + 1);

scanf("%d", p);

}

}

void print(int* p) {

for (int i = 0; i < 10; ++i, ++p) {

printf("%d ", *p);

}

printf(" ");

}

void fun(int* q) {

int* p = q;

int* minp = p;

int* maxp = p;

int temp;

for (int i = 1; i < 10; ++i, ++p) {

if (*maxp < *p) {

maxp = p;

}

if (*minp > *p) {

minp = p;

}

}

temp = *maxp;

*maxp = *p;

*p = temp;

temp = *minp;

*minp = *q;

*q = temp;

}

void main() {

int arr[10];

int* p = arr;

input(p);

print(p);

fun(p);

print("最小值為",p[0]);

system("pause");

}

(3)c語言中什麼叫擂台法擴展閱讀:

程序思路:

(指針方法處理)輸入十個整數, 將其中最小的數與第一個數對換,把最大的數與最後一個數對換,因此便可得到最小值為指針的第一個元素。

將程序分為三部分:輸入、比較、輸出,分別對應一個函數

1、輸入十個數;

2、進行處理;

3、 輸出最小值。

D. 求C語言 輸入10個數 輸出最大值

C語言輸入十個數的編程方法如下:

1.首先需要定義一個整型數組空間,因為這里需要輸入十個數,所以數組空間為10個。

E. c語言排序問題。

不一樣。打擂台是每次比出一個最大的拿掉,剩下的接著比,最大的第一個被確定;
冒泡則是每次只交換相鄰的,直到順序正確,如果最大的排在末尾,可能要經過很多很多次循環才能交換到隊首。

F. 用「打擂台法」輸出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;

}

(6)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
}

G. c語言問題求解

  1. 答案

    ①x>=0 ②x < amin

  2. 為什麼x同時賦給amin和amax?

    並不是同時賦給amin和amax,每次只能執行一個if分支。對於每一次循環只能是要麼執行amax=x,要麼執行amin=x。只不過是一個while循環判斷輸入的這個數字是不是最大值或者最小值而已,這樣一次循環辦能兩個事情,方便。不可能出現一個數既比最大值要大還比最小值最小。不明白可以往下看。

  3. 解析

    這個題讓找出所輸入的一組數據中的最大值和最小值。這個題的思路是使用了打擂台演算法。打擂台演算法就是可以解決最大值和最小值問題。演算法思路:默認設置所輸入的第一個數字就是最大值。其後,對於每次輸入的數字都和最大值進行比較,如果說當前值都比最大值都大了,那麼這個值就新的最大值。最小值也一樣:設置第一個數為最小值,對其後的每一個數字都和這個默認最小值進行比較,如果當前值都比最小值都還小了,那麼這個值就是新的最小值。所以會有這兩條語句:

  4. if(x>amax)amax=x;
    if(x<amin)amin=x;
    上面就是比較語句,對於所輸入的數值,和amax最大值比較,如果比最大值要大,就把當前值x賦予給amax,此時最大值被更新了。第二如果x比最小值都要小,就把當前x賦予給amin,此時最小值被更新了。所以這里並不是說x同時賦給了amax和amin,這個兩個if語句每次循環只能走一個。如果還不明白自己可以拿筆拿紙畫一畫,一畫就明白。

H. C++擂台法排序

for(i=0;i<n-1;i++){
max=i;
for(j=0;j<n;j++){
if(a1[max] < a1[j])
max=j;
這里j=0應該改為j=i
第二個排序錯誤一堆。前一個就這里錯了。結果應該是對的。

I. C語言中基本的幾種演算法有哪些越多越好!就像打擂台演算法'冒泡排序法等等...

排序演算法
冒泡排序
選擇排序
快速排序
高精度運算
存儲方法
加法運算
減法運算
乘法運算
擴大進制數
習題與練習
搜索演算法
枚舉演算法
深度優先搜索
廣度優先搜索
8數碼問題
n皇後問題
搜索演算法習題
枚舉法習題
聰明的打字員
量水問題
染色問題
跳馬問題
算24點
圖論演算法
最小生成樹演算法(Prim演算法)
單源最短路徑演算法(Dijkstra演算法)
任意結點最短路徑演算法(Floyd演算法)
求有向帶權圖的所有環
Bellman-Ford演算法
計算圖的連通性
計算最佳連通分支
計算拓撲序列
圖論演算法習題
網路建設問題
最短變換問題
挖地雷
烏托邦城市
烏托邦交通中心
動態規劃
最短路徑問題
動態規劃概念
騎士游歷問題
最長遞增子序列
合唱隊形
石子合並問題
能量項鏈
0/1背包問題
開心的金明
金明的預算方案
加分二叉樹
字串編輯距離
花瓶插花
凸多邊形三角劃分
快餐店

J. 構造一個循環,用擂台法求從鍵盤輸入10個數中最大數。

看起來是一個題,得到正確結果不難,可是不知道什麼是擂台法,

PublicSubMyMax()
DimSrs(1To2),iAsByte
Fori=1To10
Srs(1)=InputBox(Prompt:="請輸入的第"&i&"個數字:",Title:="輸入數字")
Srs(2)=IIf(Srs(1)>Srs(2),Srs(1),Srs(2))
Next
MsgBox"最大數為:"&Srs(2)
EndSub