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語言問題求解
答案
①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;
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