Java实现冒泡排序、快速排序算法

本文介绍了排序算法的概念、衡量标准及分类,重点讲解了Java中冒泡排序和快速排序的实现原理及效率分析。冒泡排序时间复杂度为O(n^2),稳定且空间效率高。快速排序采用分治法,平均时间复杂度为O(nlogn),但不稳定。
摘要由CSDN通过智能技术生成

一、排序算法

1.1 概念

排序:假设含有n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn}。将这些记录重新排序为{Ri1,Ri2,…,Rin},使得相应的关键字值满足条Ki1<=Ki2<=…<=Kin,这样的一种操作称为排序。
通常来说,排序的目的是快速查找。

1.2 排序衡量标准

衡量排序算法的优劣:
1.时间复杂度:分析关键字的比较次数和记录的移动次数
2.空间复杂度:分析排序算法中需要多少辅助内存
3.稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。

1.3 排序的分类

排序算法分类:内部排序和外部排序。
内部排序:整个排序过程不需要借助于外部存储器(如磁盘等),所有排序操作都在内存中完成。
==说明:==后面详细讲的冒泡排序、快速排序、归并排序和堆排序都是内部排序。
外部排序:参与排序的数据非常多,数据量非常大,计算机无法把整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘)。外部排序最常见的是多路归并排序。可以认为外部排序是由多次内部排序组成。

二、冒泡排序

排序思想:
相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。
效率分析:
时间效率:O(n^2)
空间效率:空间效率很高,只需要一个附加程序单元用于交换,其空间效率为O(1)
稳定性:稳定
实现代码如下:

public class SortTest {
   
 public static void main(String[] args) {
   
  int[] arr = new int[] {
   23,445,32,65,-32,-43,0,9,72,32};
  //使用冒泡排序实现数组元素从小到大的顺序排序
  for(int i = 0;i < arr.length -1;i++) {
   
   for(int j = 0;j < a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值