简单排序--冒泡排序
冒泡排序:
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();}
}
简单排序--冒泡排序相关推荐
- TZC 1283: 简单排序 —— 冒泡排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://www.runoob.com/w3cnote/bubble-so ...
- 简单排序——冒泡排序,选择排序,插入排序,对象排序
2019独角兽企业重金招聘Python工程师标准>>> 1)冒泡排序 package sort; /** * 冒泡排序,每次把数组最大值送到未排序部分的最末端 * @author ...
- 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
[简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...
- HDU1040简单排序题
简单排序直接上代码:总共使用了九种方法解决这道题 方法一: #include<iostream> #include<algorithm> #include<cmath&g ...
- 冒泡排序java代码_看动画学算法之:排序冒泡排序
点击上方的蓝字关注我吧 程序那些事 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序. 排序算法有很多种,每个都有 ...
- 算法:三种简单排序算法
排序算法比較常见的有:冒泡排序.简单选择排序.直接插入排序:希尔排序.堆排序.归并排序和高速排序算法等. 今天先学习一下前面三种比較简单的算法.排序的相关概念: ①排序的稳定性:两个或多个元素相等.排 ...
- C#实现(递归和非递归)快速排序和简单排序
C#实现(递归和非递归)快速排序和简单排序 本人因为最近工作用到了一些排序算法,就把几个简单的排序算法,想冒泡排序,选择排序,插入排序,奇偶排序和快速排序等整理了出来,代码用C#代码实现,并且通过了测 ...
- 数据结构 排序【简单排序(冒泡、插入)、希尔排序、堆排序、排序方法的综合比较、2套 排序汇总代码】
目 录 第9章 排序(上) 9.1 简单排序(冒泡.插入) 1.前提 2.简单排序(冒泡排序) 3.简单排序(插入排序) 4.时间复杂度下界 9.2 希尔排序 9.3 堆排序 排序方法综合比较 排 ...
- 看动画学算法之:排序-冒泡排序
文章目录 简介 冒泡排序的原理 冒泡排序算法的java实现 冒泡算法的第一次改进 冒泡算法的第二次改进 冒泡排序的时间复杂度 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问 ...
最新文章
- 帮奶牛找对象?华为云AI黑科技大揭秘
- mysql下载地址与安装
- 作业二:编写一个自动生成四则运算的程序
- 通过一道题目来理解互斥和同步
- c++的构造函数初始化列表
- 数组shift方法_数组shift()方法以及JavaScript中的示例
- oracle 12c cdb/pdb tnsnames.ora设置
- 【行为识别】基于matlab轨迹法行为识别【含Matlab源码 375期】
- rpm安装mysql指定数据仓库_linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境-Go语言中文社区...
- Windows Phone实用开发技巧(33):不重启程序切换当前语言
- 虚拟专用网之L2TP协议介绍
- python读取udp数据包内容_python – 解析UDP数据包
- Microsoft Office Word、Excel 和 PowerPoint 文件格式兼容包
- 学习随笔#13 模型预测控制(MPC)
- DIY一块单面1TB高速NVMe SSD, SM2262EN量产开卡软件+JMS583转接
- java文件上传下载接口_java 文件上传下载
- yum 碰到的问题与解决办法
- 【20140429】两种游戏后台架构的简单总结
- FFmpeg色度抠图
- 软考笔记——第七章--数据结构
热门文章
- SpringBoot创建项目入门案例
- Pytorch代码函数笔记
- azdb文件怎么打开_AZDBExplorerSvcs.dll
- python实现lenet_吴裕雄 python 神经网络TensorFlow实现LeNet模型处理手写数字识别MNIST数据集...
- 如何维持手机电池寿命_充电小知识:你知道如何正确充电吗?这几种充电方式最损害电池...
- xy轴坐标图数字表示_【相机标定】四个坐标系之间的变换关系
- 简单比对照片是否相同_小新说法 | 如何认定商标是否侵权?
- 分段式多级离心泵_离心泵与多级离心泵工作原理
- 网关到底是什么?协议转换器是网关吗?
- 视频光端机音频出现噪音是为何?