当前位置:网站首页>冒泡排序
冒泡排序
2022-08-08 22:15:00 【LMJC】
介绍
基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。冒泡排序是一个稳定的排序算法
过程:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
优化:
如果在一趟排序的过程中没有发生交换,则说明已经排好序了,因此可以在排序的过程中立一个flag来判断这一趟排序是否发生元素交换,如果没有则说明已经排好序了,退出循环,减少不必要的比较。
图解冒泡排序
平均时间复杂度:O(n2)
实现代码
public class BubbleSort {
public static int[] bubbleSort(int[] sourceArray) {
//对原有的数组进行拷贝
int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
//定义一个boolean变量用来表示此次循环是否已经发生了交换,如果没有发生交换,表示排序完成,退出循环
boolean flag ;
//定义一个临时变量,用于后面的交换
int temp;
for (int i = 0; i < arr.length-1; i++) {
flag = true;
for (int j = 0; j < arr.length -1- i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
flag = false;
}
}
//判断此次是否发生交换
if(flag){
break;
}
}
return arr;
}
public static void main(String[] args) {
int arr[] = {
3,7,2,4,5};
System.out.println("排序前:"+Arrays.toString(arr));
System.out.println("----------------------");
int[] arr1 = bubbleSort(arr);
System.out.println("排序后:"+Arrays.toString(arr1));
}
}
截图:
边栏推荐
猜你喜欢
随机推荐
新手如何买股票,买股票安全吗
SVN Update和Commit执行文件
爬虫系列:读取 CSV、PDF、Word 文档
买股票要选择哪家证券公司更好?网上客户经理开户安全吗
测试/开发程序员,如何跳出技术瓶颈?一年两年......
2.5W 字详解线程与锁了,面试随便问!!
mysql 忘记root密码后 ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
Scala encryption and hash functions
"New Infrastructure of Cultural Digital Strategy and Ecological Construction of Cultural Art Chain" was successfully held
股市预测,销量预测,病毒传播...一个时间序列建模套路搞定全部!
Crawler Series: Storing Media Files
How do I use cURL with a proxy?
雷电模拟器frida脱壳
爬虫系列:存储 CSV 文件
【硬件通讯协议】SIP总线协议以及模拟(软件)SPI
一个英文字母,一个中文各占多少字节
动手学深度学习_转置卷积
基于阿里云的基础架构设施保障(一)IAAS云计算
世界经济和金融秩序再定义 | 零数科技受邀出席第三届世界金融论坛
基于阿里云的基础架构设施保障(四)IAAS进阶实践运用