基本介绍
冒泡排序的基本思想,从下标较小的元素开始比较,如果相邻两个元素是逆序则交换两个元素,,使值较大的数往后排,就像水里的气泡一样逐渐往上冒
# 一、例子演示
给定一个数组
{5,4,3,2,1};
第一躺排列:
{4,5,3,2,1}
{4,3,5,2,1}
{4,3,2,5,1}
{4,3,2,1,5}
第二趟排序
{3,4,2,1,5}
{3,2,4,1,5}
{3,2,1,4,5}
{3,2,1,4,5}
第二趟排序
{2,3,1,4,5}
{2,1,3,4,5}
{2,1,3,4,5}
第三趟排序
{1,2,3,4,5}
二、代码实现
public static void main(){
int arr={5,4,3,2,1};
//进行排列
for(int i=0;i<arr.length-1;i++){
//实现升序排列
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp
}
}
}
}
2.优化代码
我们可以发现在排序的时候有的时候没有发生交换,所以我们可以进行优化
public static void main(String agrs[]){
int arr={5,4,3,2,1};
boolean flag=false;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
flag=true;
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
if(!flag){
break;
}else
{
flage=false;
}
}
}
}
总结
冒泡排序算法速度较慢,时间复杂度为O(n2),可以去优化一下提升运行速度