关于java的冒泡排序

这篇具有很好参考价值的文章主要介绍了关于java的冒泡排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于java的冒泡排序

我们前面的文章中了解到了数组的方法类Arrays,我们本篇文章来了解一下最出名的排序算法之一,冒泡排序!😀

冒泡排序的代码还是非常简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人皆知!

冒泡排序逻辑

1、比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换位置。
2、每一次比较都会产生出一个最大,或者最小的数字。
3、下一轮则可以少一次排序
4、依次循环,直到结束。

我们下面直接用代码来进行说明,方便大家更好的理解😊。

在看代码之前,我们先来说明一个问题,因为冒泡排序是比较相邻的元素,比较大小然后对换位置,有时候为了图方便,直接写成了下面的代码进行对换。

a = b;
b = a;

因为b已经赋值给a了,所以再次赋值的话a和b是相等的,没有意义。

我们可以用换饮料的方式,给大家说明一下😉

假如有一杯西瓜汁和一杯芒果汁,需要把饮料互换,芒果汁倒入西瓜汁的杯子,西瓜汁倒入芒果汁的杯子。

关于java的冒泡排序,java,算法,开发语言

我们这个时候,就可以拿来一个空杯子,先把西瓜汁倒入空杯子,再把芒果汁倒入西瓜汁的杯子,然后空杯子里面的西瓜汁再倒入芒果汁的杯子里面,这个空的杯子就是我们定义的临时变量。

import java.util.Arrays;

public class Demo
{
	public static void main(String[] args)
	{
		int[] a = {1,22,34,2,88,76,98}; //声明一个数组并赋值
        int[] sort=sort(a);
        System.out.print(Arrays.toString(sort));
	}
	
	//冒泡排序
	public static int[] sort(int[] array)
	{
		int temp=0;//定义一个临时变量
		for(int i = 0;i<array.length-1;i++)//外层循环,判断循环次数
		{
			for(int j=0;j<array.length-1-i;j++)//内层循环,如果第一个数比第二个数大,则交换位置
			{
				if(array[j+1]<array[j])
				{
					temp=array[j+1];
					array[j]=array[j+1]; //换杯子
					array[j+1]=temp;
				}
			}
		}
        
        return array;
	}
}

我们来执行一下代码,可以看到下面的内容。

[1, 2, 22, 34, 76, 88, 98]

进程结束......

我们这个输出的结果是正序排列的,我们如果像倒序排列的话,只需要array[j+1]>array[j],让后一个大于前一个即可。

import java.util.Arrays;

public class Demo
{
	public static void main(String[] args)
	{
		int[] a = {1,22,34,2,88,76,98}; //声明一个数组并赋值
        int[] sort=sort(a);
        System.out.print(Arrays.toString(sort));
	}
	
	//冒泡排序
	public static int[] sort(int[] array)
	{
		int temp=0;//定义一个临时变量
		for(int i = 0;i<array.length-1;i++)//外层循环,判断循环次数
		{
			for(int j=0;j<array.length-1-i;j++)//内层循环,如果第一个数比第二个数大,则交换位置
			{
				if(array[j+1]>array[j])
				{
					temp=array[j+1];
					array[j]=array[j+1]; //换杯子
					array[j+1]=temp;
				}
			}
		}
        
        return array;
	}
}

我们来执行一下代码,可以看到下面的内容。

[98, 88, 76, 34, 22, 2, 1]

进程结束......

优化冒泡排序

我们上面的代码中,是比较两个数的大小,冒泡排序中这个算法的时间复杂度为O(n2)。

我们可以考虑,如果其中的两个数,已经有序了,比如1,22,34,2,88,76,98 22和34已经是排好序的了,就可以省去这部分的时间。

import java.util.Arrays;

public class Demo
{
	public static void main(String[] args)
	{
		int[] a = {1,22,34,2,88,76,98}; //声明一个数组并赋值
        int[] sort=sort(a);
        System.out.print(Arrays.toString(sort));
	}
	
	//冒泡排序
	public static int[] sort(int[] array)
	{
		int temp=0;//定义一个临时变量
		for(int i = 0;i<array.length-1;i++)//外层循环,判断循环次数
		{
            boolean flag=false;//通过flag减少没有意义的比较
			for(int j=0;j<array.length-1-i;j++)//内层循环,如果第一个数比第二个数大,则交换位置
			{
				if(array[j+1]>array[j])
				{
					temp=array[j+1];
					array[j]=array[j+1]; //换杯子
					array[j+1]=temp;
                    flag=true;
				}
			}
            if(flag==false)
            {
                break;
            }
		}
        return array;
	}
}

我们增加一个布尔类型的判断,如果排序存在就不去执行比较,这样可以节省部分时间,因为数据量大的时候,节省1秒钟也是非常关键的!我们来执行一下代码,可以看到输出的内容没有变化。

[98, 88, 76, 34, 22, 2, 1]

进程结束......

所以我们在写程序的时候,尽量多去研究优化点,节省运行时间,执行效率提升改善~😎文章来源地址https://www.toymoban.com/news/detail-813320.html

到了这里,关于关于java的冒泡排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go 语言实现冒泡排序算法的简单示例

    以下是使用 Go 语言实现冒泡排序算法的简单示例: 在这个例子中, bubbleSort 函数接收一个整数切片,对切片中的元素进行冒泡排序。在 main 函数中,我们定义了一个示例数组,调用 bubbleSort 函数对其进行排序,并输出结果。 注意,冒泡排序算法的时间复杂度为 O(n^2),因此对

    2024年01月23日
    浏览(35)
  • Java 与排序算法(1):冒泡排序

    冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过不断交换相邻两个元素的位置,使得较大的元素逐渐往后移动,直到最后一个元素为止。冒泡排序的时间复杂度为 O ( n 2 ) O(n^2) O ( n 2 ) ,空间复杂度为 O ( 1 ) O(1) O ( 1 ) ,是一种稳定的排序算法。 其实现过程

    2024年02月11日
    浏览(31)
  • Java 语言实现冒泡排序

    冒泡排序是一种简单直观的排序算法,它重复地比较相邻的两个元素,如果顺序错误就交换它们,直到没有需要交换的元素为止。冒泡排序的思路是通过每一轮的比较将最大(或最小)的元素逐渐“冒泡”到数组的最后,并将其固定在正确的位置上。 Java作为一种高级语言,

    2024年02月10日
    浏览(33)
  • 快速了解四种排序算法:希尔排序,堆排序,快速排序,冒泡排序(c语言)

     一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。 1.1算法(algorithm ) 是指令的集合,是为解决特定问题而规定的一系列操作。 它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据

    2024年02月16日
    浏览(42)
  • (四)Java算法:冒泡排序

       冒泡排序 (Bubble Sort),是一种计算机科学领域的较简单的排序算法。它的工作原理是:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果不是指定顺序(比如从小达到)就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也

    2024年02月04日
    浏览(77)
  • 【Java】使用 Java 语言实现一个冒泡排序

    大家好,我是全栈小5,欢迎阅读小5的系列文章。 这是《Java》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平

    2024年03月22日
    浏览(35)
  • C语言入门:冒泡法排序、交换法排序和选择法排序算法的详解(代码分析)

     冒泡法排序 :顾名思义,小的数据就好像水中的气泡一样总是逐渐往上升, 大的数据就像石块一样往下沉,因此称为冒泡法排序法。 假如有n个数字,则需要进行n-1轮  第一轮结果:最大的数,被放在了最后一位  第二轮:元素 ‘8’ 已经拍好了顺序,所以只用将前4个元素

    2024年02月03日
    浏览(36)
  • Java-三个算法冒泡-选择排序,二分查找

    Java算法: 冒泡排序; 解析:将前后两个数对比,将大的数(或小的)调换至后面,每轮将对比过程中的最大(或最小)数,调到最后面。每轮对比数减一;初始对比数为数组长度-1. 选择排序: 解析:选择第一个数依次与其他元素对比,数值小的或(大的)交换位置至前方(

    2024年02月11日
    浏览(29)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序,堆排序】超详细~~

    目录 冒泡排序(BubbleSort): 代码详解:  冒泡排序的优化:  选择排序(SelectSort): 代码详解:  插入排序(InsertSort): 代码详解:  希尔排序(ShellSort):  法一(交换法)代码详解:  法二(移位法--插入排序的优化)代码详解: 快速排序(QuickSort):  代码详解:  归并排

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包