C++程序基础(10):C++打擂法和三个数排序

编程入门 行业动态 更新时间:2024-10-08 12:38:39

C++程序基础(10):C++打擂法和三<a href=https://www.elefans.com/category/jswz/34/1769671.html style=个数排序"/>

C++程序基础(10):C++打擂法和三个数排序

C++-打擂法和三个数排序

  • 打擂法
  • 三个数排序
    • 例题

打擂法

擂台制,是生活中一种常见的比赛制度。

败者退出擂台,胜者继续接收挑战。

挑战擂主的选手称为挑战者

胜利后继续接受挑战的选手称为擂主

这种不断挑战,不断守擂的过程就叫做擂台制

我们将这种制度融入编程之中,

使它成为一种排序方法

比如,如果我们要确定一些数中的最大值,

我们可以通过打擂的方法,第一个数默认成为擂主,往后进行大小的比较,如果碰到比当前擂主大的数,那么这个数成为新的擂主

这种线性的比较方法,就叫做打擂法

很显然,每次我们需要寻找一个最大值时,都需要将这些数从前往后搜索一遍

那么打擂法的时间复杂度就为 O ( n ) O(n) O(n)

三个数排序

知道了打擂法的原理,我们可以来看一些实际的运用:

例题

题目描述:

假设,小明得到了三个数值 a , b , c a,b,c a,b,c,他想要知道这三个数值的大小关系,找到了你帮他对这三个数进行排序,要求从大到小排序。请编写代码实现这一功能

输入样例:

1 3 2

输出样例:

3 2 1

分析:

本题的排序只有三个数值,那么我们只需要通过打擂法一一将这些数字进行比较,如果碰到擂主比挑战者小的情况,就将这两个数调换位置即可

在调换位置时,我们可以用一个变量来辅助

这个变量存储擂主的值,在擂主被赋为一个新值时,挑战者可以赋值为这个变量的值,避免了数值覆盖的情况。

代码实现:

#include <bits/stdc++.h>
using namespace std;int main()
{int a,b,c,k;cin>>a>>b>>c;if(a<b)//不断打擂{k=a;//利用k将a和b进行调换位置a=b;b=k;}if(a<c){k=a;a=c;c=k;}if(b<c){k=b;b=c;c=k;}cout<<a<<" "<<b<<" "<<c<<endl;return 0;
}

此外,这里再介绍一种相对便捷的方法。

在C++中,有一个专门的快捷函数:

swap(a,b);

可以实现调换 a , b a,b a,b 数值的功能

那么以上的三个数排序代码就可以简化为:

#include <bits/stdc++.h>
using namespace std;int main()
{int a,b,c,k;cin>>a>>b>>c;if(a<b)//不断打擂{swap(a,b);//使用函数进行数值交换}if(a<c){swap(a,c);}if(b<c){swap(b,c);}cout<<a<<" "<<b<<" "<<c<<endl;return 0;
}

完结撒花

更多推荐

C++程序基础(10):C++打擂法和三个数排序

本文发布于:2024-02-07 00:17:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751782.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:个数   基础   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!