冒泡排序法_多态实现

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java标识符的命名规则[通俗易懂]

    Java标识符的命名规则[通俗易懂]Java语言中,为各种变量、方法和类等起的名字称为标识符Java标识符的命名规则:应以字母、下划线、美元符开头后跟字母、下划线、美元符或数字Java标识符大小写敏感,长度无限制1.java中能用作标识符的有:26个英文字母(大、小写),数字,下划线,美元符号$。但是不能以数字开头。2.类名首个字母必须大写,多个单词组成的,每个单词首字母都要大写。3.方法名一般首个字母小写(构造…

    2022年7月8日
    36
  • 一篇万字长文讲清如何做数据治理

    一篇万字长文讲清如何做数据治理

    2021年7月5日
    111
  • java中Scanner类用法的详解[通俗易懂]

    java中Scanner类用法的详解[通俗易懂] 一  java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。首先要导入包  import java.util.Scanner;Scanner类的创建对象:   Scanner S=newScanner(System.in);   方法基本格式  hasNextXxx()  判断是否还有下一个输入项,其中Xxx可以是Int,…

    2022年7月7日
    23
  • RestFul风格「建议收藏」

    RestFul风格「建议收藏」RestFul风格概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。功能资源:互联网所有的事物都可以被抽象为资源资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。传统方式操作资源:通过不同的参数来实现不同的效果!方法单一,post和get​ http://127.0.0.1/item/queryItem.actio

    2022年6月15日
    29
  • 华为交换机关闭网口_关闭端口的命令 怎么开启华为交换机关闭端口,命令谁知道啊。…[通俗易懂]

    华为交换机关闭网口_关闭端口的命令 怎么开启华为交换机关闭端口,命令谁知道啊。…[通俗易懂]1025端口和UDP13137、138、445端口。想和你喝酒是假的,余生都想醉在你心头却是真的。怎样用命令关闭和开启80端口?电脑点击开始按钮,点击控制面板。遇见的一部分叫做缘分,另一部分,小编们叫它劫数,有命中注定就有在劫难逃。进入控制面板页面,点击windows防火墙。进入windows防火墙界面,点击高级设置。小编们都在淡化这段感情,你选择新欢,小编选择时间。进入防火墙高级管理…

    2022年7月20日
    56
  • Java创建二维数组

    Java创建二维数组1、Java创建二维数组:int[][]array=newint[6][6];2、直接创建二维数组并赋值:int[][]array={{1,2,3},{1,2,3},{1,2,3}};3、二维数组的声明:先声明再分配内存数组声明:数据类型数组名[][];…

    2022年6月6日
    38

发表回复

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

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