冒泡排序法_多态实现

冒泡排序法_多态实现看图秒懂代码!

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默:

前言 – 床长人工智能教程

——-

用户从键盘输入N,然后输入N个实数,使用冒泡排序方法对这N个元素排序,输出排序后的数据。

何谓冒泡排序法

(1)两两比较相邻元素A(I)和A(I+1)(I=1,2,…N-1),如果A(I)>A(I+1),则交换A(I)和A(I+1)的位置;

(2)对剩下的N-1个元素,再两两进行比较,按同样规则交换它们的位置,经过N-2次比较,将次最大值交换到A(N-1)的位置;

(3)如法炮制,经过N-1趟的“冒泡处理”,每趟进行N-i次的比较,全部数列有序。

算法描述

冒泡排序法_多态实现

冒泡排序法_多态实现

冒泡排序法_多态实现

#include<iostream> //包含输入输出头文件
#include<cmath>
using namespace std; //指定名字空间
int main() 
{ //主函数
	int a[100]; //定义数组,大小100
	int N; //元素的实际个数
	int i = 0, j = 0; //循环变量,并进行初始化
	cin >> N; //输入元素个数
			  //-------输入数据-----------
	for (i = 0; i<N; i++) //输入N个元素
		cin >> a[i]; //循环体只有一行
					 //-------排序---------------
	for (i = 0; i<N - 1; i++) { //控制n-1趟冒泡
		for (j = 0; j<N - 1 - i; j++)
		{
			if (a[j]>a[j + 1]) { //比较相邻的两个元素
				int tmp; //临时变量
				tmp = a[j]; //交换
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
		}
	}
	//--------输出----------
	for (i = 0; i<N; i++) 
	{ //使用循环,输出N个元素
		cout << a[i] << " "; //输出a[i], 后加空格,不换行
	}
	cout << endl; //所有元素输出完之后才换行
	return 0; //函数返回
}

模板总结

void bubbleSort(int a[], int n)
{
    for(int i = n - 1; i > 0; i--)
        for(int j = 0; j < i; j++)
            if(a[j] > a[j+1]) 
                swap(a[j], a[j+1]);
}

思路拓展

①修改程序,用户不再先输入元素个数,而是在输入数据时以99999为结束符,如输入:20 13 01 30 23 52 15 34 99999结果为:1 13 15 20 23 30 34 52②当元素较多时,在一行中输出所有元素是不现实的。虽然系统会自动换行,但不整齐。请修改程序,使每行输出5个元素。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180186.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月19日 下午6:36
下一篇 2022年10月19日 下午6:36


相关推荐

  • linux 文件重命名_手机文件重命名

    linux 文件重命名_手机文件重命名没有专门的重命名命令用mvab就可以重命名了=========================================mv:move移动文件(延伸功能:重命名,linux系统没有专门的重命名命令)基本格式:移动文件:mv文件名移动目的地文件名重命名文件:mv文件名修改后的文件名…

    2025年10月18日
    6
  • 单片机PWM舵机控制原理

    单片机PWM舵机控制原理舵机的控制一般需要一个 20ms 的时基脉冲 该脉冲的高电平部分一般为 0 5ms 2 5ms 范围内的角度控制脉冲部分 以 180 度角度舵机为例 那么对应的控制关系是这样的 0 5ms0 度 1 0ms45 度 1 5ms90 度 2 0ms 135 度 2 5ms 180 度

    2026年3月20日
    2
  • ERNIE-5.0 荣登 LMArena 文本榜国内第一,全面超越多款国际主流模型!

    ERNIE-5.0 荣登 LMArena 文本榜国内第一,全面超越多款国际主流模型!

    2026年3月12日
    2
  • 工程研发专业名词解释(EVT,DVT,DMT,MVT,PVT,MP)

    工程研发专业名词解释(EVT,DVT,DMT,MVT,PVT,MP)EVT EngineeringV 工程验证测试产品开发初期的设计验证 设计者实现样品时做初期的测试验证 包括功能和安规测试 一般由 RD Research amp Development 对样品进行全面验证 因为是样品 问题可能较多 测试可能会做 N 次 DVT DesignVerifi 设计验证测试解决样品在 EVT 阶段的问题

    2026年3月17日
    2
  • 怎样设置rotacast插件_potplayer好好的设置设置,看个4k还是挺香的[通俗易懂]

    怎样设置rotacast插件_potplayer好好的设置设置,看个4k还是挺香的[通俗易懂]potplayer,一个神器!画质很有提升!4k没问题!如果你也是折腾一族,就来折腾折腾吧!安装potplayer,一路点完,到最后一步的时候,要选择安装额外的编解码器。然后系统会自动安装。(啰嗦一句,所有的东西请安装在非中文目录下并且在同一个文件夹里,最好就安装在解压的那个文件夹里,否则会出现各种奇怪的问题)当你勾选了安装额外的编解码器,点击关闭后,软件会自动弹出编解码器选择组件对话框,如图所…

    2025年11月15日
    5
  • 白盒测试和黑盒测试的区别

    白盒测试和黑盒测试的区别白盒测试 是指实际运行被测程序 通过程序的源代码进行测试而不使用用户界面 这种类型的测试需要从代码句法发现内部代码在算法 溢出 路径和条件等方面的缺点或者错误 进而加以修正 白盒测试把测试对象看作一个打开的盒子 黑盒测试 又称功能测试 数据驱动测试或基于规格说明的测试 是通过使用整个软件或某种软件功能来严格地测试 而并没有通过检查程序的源代码 或者很清楚地了解该软件的源代码程序具体是

    2025年8月10日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号