浅谈冒泡排序

一、冒泡排序

冒泡排序是我们所掌握的最基础的排序算法之一,它的排序思想如下:
假设我们的排序要求为:数组大小为N的,从小到大的一个排序过程;
1 、排序思想
第一趟排序
(1)我们需要找出当前数组状态的第一个元素作为排序的起点;
(2)将数组相邻的元素进行比较,并且将数据较大的元素交换到相对靠后的位置上,即a[j]>a[j+1],则swap(a[j],a[j+1]),使得a[j+1]中总是存放相对较大的值;
(3)一趟排序结束,数组的第n-1元素即为该组数据的最大值;
..........
依次类推,第二趟只需对前面n-1个元素进行排序即可,且该趟排序的最大值放在数组的n-2元素位置......

例如:a[5]={3,2,4,1,5};

flag标志,初值为0,作为我们数组排序是否已经排序完成的标志,每趟排序flag初值均为1,当只要有一次相邻元素进行交换时,flag=0; flag=1时,表示数组元素为排好顺序。

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

我们能发现最后一趟排序中flag的值已经为1,所以我们的排序过程也就结束了,由于第三趟的排序结果,已经是我们想要的结果啦,所以排序的第四趟只是检验我们第三趟排序的结果,所以当flag=1时,排序结束。

话不多说上代码

java
public class Bubble_Sort {
    public static void swap(int[] arr,int index1,int index2){
        int t;
        t=arr[index1];
        arr[index1]=arr[index2];
        arr[index2]=t;
    }
    public static void sort(int[] arr){
        boolean flag=false;
        int times=0;
        for (int i = 0; !flag && i < arr.length-1; i++) {
            flag=true;
            System.out.println("第"+ ++times +"排序");
            for (int j = 0; j < arr.length-i-1; j++) {
                if(arr[j]>arr[j+1]){
                    swap(arr,j,j+1);
                    flag=false;
                }
            }
        }
    }
    
    public static void print(int[] arr){
        System.out.println("排序结果:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    
    public static void main(String[] args){
        int[] arr={3,2,4,1,5};
        sort(arr);
        print(arr);
    }
}

总结: 冒泡排序的算法 最坏的情况下需要n-1趟的排序过程,所以该算法的时间复杂度为O(n^2);
所需的辅助空间为1。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,585评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,084评论 0 15
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,231评论 0 1
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,016评论 0 2
  • 【专题:玉】 阿弥陀佛,见此观音像者,皆具莫大缘分无量功德。 请有缘的朋友们分享出去,举手之劳亦可给自己亲友增进功...
    南阳雅月阅读 5,393评论 0 0