首页 > 编程语言 > 详细

冒泡排序算法的实现(Java)

时间:2021-03-15 00:17:47      阅读:26      评论:0      收藏:0      [点我收藏+]

什么是冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

一、内置好的数组元素排序

/*大致过程
j=0;
 原数组:11 5 42 4 51 8 46
1和2换
5 11 42 4 51 8 46
2和3不换
3和4换
5 11 4 42 51 8 46
4和5不换
5和6换
5 11 4 42 8 51 46
6和7换
5 11 4 42 8 46 51
 j=1
 ......
 */
public class BubbleSort
{
    public static void main(String[] args)
    {
        int[] array = new int[]{11, 5, 42, 4, 51, 8, 46,};
        int temp;//用于存储需要调换的元素
        boolean Flag=true;
        for (int i=0;i<array.length-1;i++)  //减1是因为例如:
                                            // 7个元素只需调换6次,没有减1也可以,
                                            // 因为到i=7时下面的for的条件也不满足了。
        {
          for (int j=0;j<array.length-1-i;j++)//减1是因为例如:
                                             // 7个元素只需调换6次,
                                              // 减i是因为到每遍历一遍就会从后排好一个元素的位置

          {
              if (array[j]>array[j+1])
              {
                  temp=array[j];
                  array[j]=array[j+1];
                  array[j+1]=temp;
              }
          }
        }
        for (int i=0;i<array.length;i++)
        {
            System.out.print(array[i]+" ");
        }
    }
}

二、输入元素个数及元素进行排序

import java.util.Scanner;

public class BubbleSort
{
    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入共有多少个元素");
        int x=scanner.nextInt();
        int[] array=new int[x];
        int temp;
        System.out.println("请输入"+x+"个元素");

        for (int k=0;k<array.length;k++)
        {
            int m=scanner.nextInt();
            array[k]=m;
        }
        for (int i=0;i<array.length-1;i++)
        {
            for (int j=0;j<array.length-i-1;j++)
            {
                if (array[j]>array[j+1])
                {
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
        for (int n=0;n<array.length;n++)
        {
            System.out.print(array[n]+" ");
        }
    }
}

三、大致实现过程

技术分享图片.

技术分享图片

四、总结

冒泡排序的复杂度(平均)

平均时间复杂度:O(n2)

空间复杂度:O(1)

稳定性:稳定

冒泡排序的优缺点

 1.优点:比较简单,空间复杂度较低,是稳定的;                 

 2.缺点:时间复杂度太高,效率慢;

 

冒泡排序算法的实现(Java)

原文:https://www.cnblogs.com/coopermini/p/14532581.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!