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