冒泡排序:

 public void sort(){int out,in;//out指向已经排好序的前一个for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相邻的两个元素比较,交换}}}}//实现冒泡排序

相邻的元素两两比较,out指向末端待排序的元素。

10个数据项,第一次排序9次比较,第二次 8次比较。。。一共9+8+。。。+1=45次
  N个数据 1+2+...+N+(N+1)+(N+2)=N(N+1)/2 约做了N^2/2次比较,大约N^2/4次交换(概率,两个数据交换概率1/2)时间复杂度:O(N^2)

数组初始状态:

如图,两两比较,交换(大小颠倒时)

每完成一轮两两比较,即inner+1到达未排序序列的末端,就能将未排序中的一个元素排好序(最大的)。

排好序的状态:

完整代码:

package TwoArray;/*** 冒泡排序 最小的数据项放在最开始,最大的放后面 10个数据项,第一次排序9次比较,第二次 8次比较。。。一共9+8+。。。+1=45次* N个数据 N+(N+1)+(N+2)...+1=N(N+1)/2 约做了N^2/2次比较,大约N^2/4次交换(概率,两个数据交换概率1/2)时间复杂度:O(N^2)* @author zhic**/
public class BubbleSort {int[] arr;int nElements;public BubbleSort(int max) {arr = new int[max];nElements = 0;}//构造函数public void insert(int value){arr[nElements] = value;nElements++;}public void display(){for(int i=0;i<nElements;i++){System.out.print(arr[i] + " ");}}public void swap(int one,int two){int temp = arr[one];arr[one] = arr[two];arr[two] = temp;}//交换两个下标对应的数组值public void sort(){int out,in;//out指向已经排好序的前一个for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相邻的两个元素比较,交换}}}}//实现冒泡排序public static void main(String[] args){int max = 50;BubbleSort arr = new BubbleSort(max);arr.insert(10);arr.insert(0);arr.insert(90);arr.insert(9);arr.insert(30);arr.insert(10);arr.insert(20);arr.insert(40);arr.insert(70);arr.display();System.out.println();arr.sort();arr.display();}
}

简单排序--冒泡排序相关推荐

  1. TZC 1283: 简单排序 —— 冒泡排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://www.runoob.com/w3cnote/bubble-so ...

  2. 简单排序——冒泡排序,选择排序,插入排序,对象排序

    2019独角兽企业重金招聘Python工程师标准>>> 1)冒泡排序 package sort; /**  * 冒泡排序,每次把数组最大值送到未排序部分的最末端  * @author ...

  3. 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序

    [简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...

  4. HDU1040简单排序题

    简单排序直接上代码:总共使用了九种方法解决这道题 方法一: #include<iostream> #include<algorithm> #include<cmath&g ...

  5. 冒泡排序java代码_看动画学算法之:排序冒泡排序

    点击上方的蓝字关注我吧 程序那些事 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序. 排序算法有很多种,每个都有 ...

  6. 算法:三种简单排序算法

    排序算法比較常见的有:冒泡排序.简单选择排序.直接插入排序:希尔排序.堆排序.归并排序和高速排序算法等. 今天先学习一下前面三种比較简单的算法.排序的相关概念: ①排序的稳定性:两个或多个元素相等.排 ...

  7. C#实现(递归和非递归)快速排序和简单排序

    C#实现(递归和非递归)快速排序和简单排序 本人因为最近工作用到了一些排序算法,就把几个简单的排序算法,想冒泡排序,选择排序,插入排序,奇偶排序和快速排序等整理了出来,代码用C#代码实现,并且通过了测 ...

  8. 数据结构 排序【简单排序(冒泡、插入)、希尔排序、堆排序、排序方法的综合比较、2套 排序汇总代码】

    目   录 第9章 排序(上) 9.1 简单排序(冒泡.插入) 1.前提 2.简单排序(冒泡排序) 3.简单排序(插入排序) 4.时间复杂度下界 9.2 希尔排序 9.3 堆排序 排序方法综合比较 排 ...

  9. 看动画学算法之:排序-冒泡排序

    文章目录 简介 冒泡排序的原理 冒泡排序算法的java实现 冒泡算法的第一次改进 冒泡算法的第二次改进 冒泡排序的时间复杂度 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问 ...

最新文章

  1. 帮奶牛找对象?华为云AI黑科技大揭秘
  2. mysql下载地址与安装
  3. 作业二:编写一个自动生成四则运算的程序
  4. 通过一道题目来理解互斥和同步
  5. c++的构造函数初始化列表
  6. 数组shift方法_数组shift()方法以及JavaScript中的示例
  7. oracle 12c cdb/pdb tnsnames.ora设置
  8. 【行为识别】基于matlab轨迹法行为识别【含Matlab源码 375期】
  9. rpm安装mysql指定数据仓库_linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境-Go语言中文社区...
  10. Windows Phone实用开发技巧(33):不重启程序切换当前语言
  11. 虚拟专用网之L2TP协议介绍
  12. python读取udp数据包内容_python – 解析UDP数据包
  13. Microsoft Office Word、Excel 和 PowerPoint 文件格式兼容包
  14. 学习随笔#13 模型预测控制(MPC)
  15. DIY一块单面1TB高速NVMe SSD, SM2262EN量产开卡软件+JMS583转接
  16. java文件上传下载接口_java 文件上传下载
  17. yum 碰到的问题与解决办法
  18. 【20140429】两种游戏后台架构的简单总结
  19. FFmpeg色度抠图
  20. 软考笔记——第七章--数据结构

热门文章

  1. SpringBoot创建项目入门案例
  2. Pytorch代码函数笔记
  3. azdb文件怎么打开_AZDBExplorerSvcs.dll
  4. python实现lenet_吴裕雄 python 神经网络TensorFlow实现LeNet模型处理手写数字识别MNIST数据集...
  5. 如何维持手机电池寿命_充电小知识:你知道如何正确充电吗?这几种充电方式最损害电池...
  6. xy轴坐标图数字表示_【相机标定】四个坐标系之间的变换关系
  7. 简单比对照片是否相同_小新说法 | 如何认定商标是否侵权?
  8. 分段式多级离心泵_离心泵与多级离心泵工作原理
  9. 网关到底是什么?协议转换器是网关吗?
  10. 视频光端机音频出现噪音是为何?