数据结构与算法之二冒泡排序
冒泡排序(以从小到大排序为例)的思路是:将相邻的两个数比较,将小的调到前头,假设有6个数(8,9,5,4,2,0),第1次比较第1和第2个数(8和9)的大小,如果第1个数大于第2个数,就把两个数位置交换,第2次将第2和第3个数(9和5)进行比较和交换。。。。,如此共进行5次,得到8,5,4,2,0,9的顺序见下图,可以看到最大的数9已“沉底”,成为最下面的一个数,而最小的数“上升”。最小的数0已向上“浮起”一个位置。经第1趟(共5次)后,已得到最大的数(在最下面)。然后进行第2趟比较,对余下的前面5个数按上面的方法进行比较,见下图,经过4次比较,得到次大的数8(在5个数中最下面的位置)。在进行第3趟比较,对余下的前面4个数进行比较。。。如此进行下去。可以推知:如果有n个数,则要进行n-1趟比较(和交换)。在第1趟中要进行n-1次两两比较,在第j趟中要进行n-j次两两比较。
整体程序如下:
#include<iostream>
using namespace std;
void bubble_sort(int a[],int n);
void bubble_sort(int a[],int n)
{
int i,j,temp;
bool flag;
for(i=1;i<n;i++)
{
flag=false;
for(j=0;j<n-i;j++)
if(a[j]>a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
flag=true;//发生了交换,将标志位置为真。
}
if(!flag) return; //本趟未发生交换,则提前结束算法,说明数据已经排好序了
}
}
int main()
{
int a[10],i;
cout<<"Please input ten number: ";
for(i=0;i<10;i++)
cin>>a[i];
cout<<"The result of resort: ";
bubble_sort(a,10);
for(i=0;i<10;i++)
cout<<a[i]<<' ';
}
程序比较简单,但是看到很多书上排序都是对固定长度的数组排序,即请输入几个数这之类的,几乎没有看到那种不管你输入多少数据的,都能进行冒泡排序的那种,冒泡排序关键处理的是比较的趟数跟次数,数据长度不知道所以也不好操作,看到很多人说利用sizeof(数组名)/sizeof(数据类型)就可以知道数据有多少,也有人说过用一个标志,输入一个数据标志就自加一次,但是发现无论你输多少数据,根本只自加了一次,可能在c++中按了回车键后数据才送去缓冲区。不知谁研究了此种方法
数据结构与算法之二冒泡排序相关推荐
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
- 《数据结构与算法之二叉平衡树(AVL)》
说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...
- 02_JavaScript数据结构与算法(二)数组
JavaScript 数据结构与算法(二)数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构. 数组通常情况下用于存储一系列同一种数据类型的值. 但在 JavaScript 里 ...
- 数据结构与算法(二)单链表(Singly linked list)
数据结构与算法(二)单链表(Singly linked list) 链表(Linked list) Python完整功能实现 LeetCode思想实践: 链这个东西大家一定都不陌生, 脖子上有项链, ...
- Java 数据结构与算法系列之冒泡排序
一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...
- java树的基本知识_Java数据结构和算法(二)树的基本操作
Java数据结构和算法(二)树的基本操作 一.树的遍历 二叉树遍历分为:前序遍历.中序遍历.后序遍历.即父结点的访问顺序 1.1 前序遍历 基本思想:先访问根结点,再先序遍历左子树,最后再先序遍历右子 ...
- 《数据结构与算法之二叉搜索树(Java实现)》
说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...
- jquery删除数组中的某个元素下标越界_Java数据结构和算法(二)—数组
目录 1.Java数组介绍 2.用类封装数组实现数据结构 3.分析数组的局限性 上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻 ...
- Java数据结构和算法(二)——数组
上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖--数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...
最新文章
- java md5 ios_iOS 自带MD5
- 达达真人漫画秀,微博演绎男版杜拉拉生存记
- 把JavaScript代码写在css里
- Android Studio-AndroidStudio目录结构
- java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
- 1.3 编程基础之算术表达式与顺序执行 04 带余除法
- JAVA→XML解析EXtensible Markup Language、JSON解析JavaScript Object Notation
- 每天一道剑指offer-顺时针打印矩阵
- C语言的源代码文件、目标文件和可执行文件
- 永恒之蓝(MS17010)漏洞复现
- 王慧文清华产品课(四)
- 如何设置需要密码才能访问的共享文件夹?
- 复杂系统理论解释了Covid为何粉碎世界
- 全球与中国矿物加工工程市场深度研究分析报告
- 102-gold入门
- 如何把照片背景变成透明?怎么把图片去白底变透明?
- 超宽输入范围车载DCDC资料,原理图,PCB,软件,规格书, BOM等详细资料
- 5、玩转树莓派音频——打造便携式合成器
- 黑马程序员:交通灯管理系统学习
- tasklist /FI命令结论
热门文章
- java课程设计qq,模块java课程设计报告qq聊天
- Spring Cloud Stream与RabbitMQ整合时Producer与Consumer的相关配置
- python写一个计时器_Python 实现一个计时器
- linux java heap space_Linux tomcat9 java.lang.OutOfMemoryError: Java heap space 解决方法
- android如何不卡顿,公认不卡的安卓手机 轻松做到3年不卡顿_TOM科技
- sql server management studio 修改计算机名_计算机毕业设计之SpringBoot+ES搜房网
- java 网络实验_java网络聊天室实验
- centos安装mysql5.6系统崩溃_CentOS中安装MySQL5.6报错的解决方法
- java 获取属性值和设置属性值
- C# Combobox可输入+自动完成