八大排序算法——冒泡排序(动图演示 思路分析 实例代码java 复杂度分析)
2024-10-14 15:31:46
一、动图演示
二、思路分析
1. 相邻两个数两两相比,n[i]跟n[j+1]比,如果n[i]>n[j+1],则将连个数进行交换,
2. j++, 重复以上步骤,第一趟结束后,最大数就会被确定在最后一位,这就是冒泡排序又称大(小)数沉底,
3. i++,重复以上步骤,直到i=n-1结束,排序完成。
三、负杂度分析
1. 不管原始数组是否有序,时间复杂度都是O(n2),
因为没一个数都要与其他数比较一次,(n-1)2次,分解:n2+2n-1, 去掉低次幂和常数,剩下n2,所以最后的时间复杂度是n2
2. 空间复杂度是O(1),因为只定义了一个辅助变量,与n的大小无关,所以空间复杂度为O(1)
四、 选择排序和冒泡排序的比较
1. 时间负责度都是O(n2)
2. 空间复杂度都是O(1)
3. 选择排序是从第一位开始确定最大或最小的数,保证前面的数都是有序的,且都比后面的数小或大,
冒泡排序是从最后一位开始确定最大或最小的数,保证后面的数都是有序的且都大于或小于前面的数。
五、Java 代码如下
import java.util.Arrays;
public class 冒泡 {
public static void main(String[] args) {
int[] n = new int[]{1,6,3,8,33,27,66,9,7,88};
int temp;
for (int i = 0; i < n.length-1; i++) {
for (int j = 0; j <n.length-1; j++) {
if(n[j]>n[j+1]){
temp = n[j];
n[j] = n[j+1];
n[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(n));
}
}
最新文章
- knockoutjs+ jquery pagination+asp.net web Api 实现无刷新列表页
- django_cms安装技巧
- HTTP协议和几种常见的状态码
- Java web实时进度条整个系统共用(如java上传进度条、导入excel进度条等)
- 024医疗项目-模块二:药品目录的导入导出-HSSF导入类的学习
- SDRAM 学习(三)之command
- 转:ASP.NET MVC利用TryUpdateModel来做资料更新 (二)
- Delphi 使用之函数
- Maven本地资源库
- Android SQLite数据储存方式
- 多线程学习之五超时模式Timer
- lesson - 2 yum /单用户/救援模式/Linux 启动
- 第一行代码阅读笔记----显示隐式Intent的基本用法
- Java基础 -- 深入理解Java类型信息(Class对象)与反射机制
- POI导出复杂的excel;excel公共样式类;excel拼接定制类;数据科学计数法转为普通值
- php输出异常的检查方法
- 【LeetCode】547. 朋友圈
- Revit API创建详图视图
- 《Cocos2d-JS开发之旅》重印在即,感谢大家的支持
- 【Struts2】result类型
热门文章
- 011-MAC 设置环境变量path的几种方法
- Centos7下安装Docker(详细的新手装逼教程)
- pip 更改国内镜像
- [LeetCode] 33. Search in Rotated Sorted Array_Medium tag: Binary Search
- 师兄带你轻松入门GitHub
- linux----------centos6.4安装完了以后敲ifconfig,没有局域网ip。解决如下
- 前端学习历程--localstroge
- python 匿名函数捕获变量值 (执行时的值)
- PLSQL远程连接数据库(亲测可试)
- CMD控制器常用命令