经典排序算法之冒泡排序

一,算法原理

冒泡排序是交换排序的一种,原理是通过比较相邻两个元素的大小,如果发现顺序不对,就交换这两个元素的位置。当第一次循环结束时,最大的元素就被筛选出来,然后进入第二次循环,以此类推,直到没有任何一对数据进行比较。

下面看一个案例:

假设有5个数字,依次为:5,4,6,3,1

用冒泡排序的思想来实现的话,过程是这样的:

外层第一次循环:

4,5,6,3,1 -> 4,5,6,3,1 -> 4,5,3,6,1 -> 4,5,3,1,6 找到最大数6

外层第二次循环:

4,5,3,1,6 -> 4,3,5,1,6 -> 4,3,1,5,6    找到倒数第二大的数字5

外层第三次循环:

3,4,1,5,6 -> 3,1,4,5,6

外层第四次循环:

1,3,4,5,6

至此排序完成。

二,Java代码实现

public class Demo1 {

	public static void main(String[] args) {

		int[] arr = {5,4,6,3,1};
		//创建一个Bubble类
		Bubble bubble = new Bubble();
		bubble.sort(arr);

		//输出最后结果
		for(int i=0;i<arr1.length;i++)
	        {
			System.out.print(arr[i]+" ");
		}

	}

}

//冒泡排序
class Bubble{
	//排序方法
	public void sort(int arr[])
	{
		int temp=0;
		//排序
		//外层循环,表示一共走几次
		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])
				{
					//换位
					temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;

				}
			}
		}

	}

}

运行结果为:1 3 4 5 6

时间: 2024-11-05 15:48:45

经典排序算法之冒泡排序的相关文章

我的Java开发学习之旅------&gt;Java经典排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 一.算法原理 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.

经典排序算法(1) - 冒泡排序Bubble Sort

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端.运作步骤如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

三大经典排序算法之最经典之冒泡排序

排序算法:冒泡排序 冒泡排序的思想:让数组中的当前项和后一项进行比较,如果当前项比后一项大,则两项交换位置(让大的靠后)即可 let ary = [12,8,24,16,1]; 第一轮开始比较: 12>8  交换位置 [8,12,24,16,1] 12<24  不交换位置  [8,12,24,16,1] 24>16  交换位置   [8,12,16,24,1] 24>1  交换位置  [8,12,16,1,24] 第一轮完成后,虽然没有实现出最后的效果,但是当前数组中最大的这个值2

经典排序算法

经典排序算法(via  kkun) 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 -  插入排序Insertion sort 经典排序算法 - 基数排序Radix so

C#实现所有经典排序算法

C# 实现所有经典排序算法 1 .选择排序 选择排序 原理: 选择排序是从冒泡排序演化而来的,每一轮比较得出最小的那个值,然后依次和每轮比较的第一个值进行交换. 目的:按从小到大排序. 方法:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 第一轮依次比较相邻两个元素,将最小的一个元素的索引和值记录下来,然后和第一个元素进行交换. 如上面的数组中,首先比较的是72,54,记录比较小的索引是54的索引1.接着比较54和59,比较小的索引还是1.直到最后得到最

经典排序算法的PHP实现类

近期广受笔试摧残,对于各种排序也是晕头转向. 更坑爹的是貌似大多都是用C++.Java实现相关算法,让我搞PHP的情何以堪,更何况,PHP本身就有排序函数sort(),其实来说,是很简单的,这也可能是为什么不用PHP进行排序吧. 但考虑到PHP毕竟也是一门面向对象的语言吧,我们利用原生的语法,也是可以实现经典排序算法的,先不说性能如何,切不要妄自菲薄吧. 下面为具体的经典排序算法的PHP实现类. <?php /** * Author: helen * CreateTime: 2016/4/15

七种经典排序算法最全攻略

经典排序算法在面试中占有很大的比重,也是基础.包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序.希望能帮助到有需要的同学.全部程序采用JAVA实现. 本篇博客所有排序实现均默认从小到大. 一.冒泡排序 BubbleSort 介绍: 冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. 步骤: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对第0个到第n-1个数据做同样的工作.这时,最大的数就"浮"到了

【转】经典排序算法

地址:http://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 -  插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonho