Java 初学者进阶——bubble sort (冒泡排序)

Java 初学者进阶——bubble sort (冒泡排序)

对于java初学者,学习一些十分常见和重要的方法和基本原理是十分重要的。而bubble sort和binary search(二分查找)基本上各大公司笔试的内容,大都要求手写源码,考察你的逻辑能力。本文重点对 bubble sort 讲解,而binary search 将在写在下篇博客。如文中有错误或不足之处,迫望各位大佬不吝赐教。

bubble sort 中文名冒泡排序,是针对数组进行有序排序的一种方法,通常是对数组内的元素进行从小到大的排序,java中提供了sort方法,在实际编程中大都直接调用,具体调用方法将在后文进行展示。下面对bubble sort的原理进行讲解:

冒泡排序的原理:
冒泡排序,顾名思义,是像水中气泡一样的排序方式,下面我们定义一个整数数组

int[] arr={2,1,34,23,2,46}; 长度为6,索引到5。

当我们希望这个数组中的整数从小到大排列,就可以使用相互比较的方式。首先我们取arr[0],也就是2这个数,让它与第2至第6个比较大小,将大的数字放在右边,小的数子放在左边。当然,如果它比和它相比较的数字小,那么我们就停止比较。

第一步:
取第一个数 2 与依次与后面的数进行大小比较,如果大于被比较的数,则与之交换位置,如果小于等于,则停止比较,
(1)2与1比较,2>1,2和1换位,数组变为{1,2,34,23,2,46};
(2)2与34比较,2<34,停止比较。

第二步:
取第二个数 1 与依次与新数组后面的数进行大小比较,如果大于被比较的数,则与之交换位置,如果小于等于,则停止比较,
(1)1与2比较,(注意,现在针对的数组为{1,2,34,23,2,46};)1<2,停止比较。

第三步:
取第三个数 34与依次与新数组后面的数进行大小比较,如果大于被比较的数,则与之交换位置,如果小于等于,则停止比较,
(1)34与23比较,34>23,34和23换位,数组变为{1,2,23,34,2,46};
(2)34与2比较,34>2,34和2换位,数组变为{1,2,23,2,34,46};
(3)34与46比较,34<46,停止比较。

第四步:
取第四个数 23与依次与新数组后面的数进行大小比较,如果大于被比较的数,则与之交换位置,如果小于等于,则停止比较,
(1)23与2比较,23>2,23和2换位,数组变为{1,2,2,23,34,46};
(2)23与34比较,23<34,停止比较。

第五步:
取第五个数 2与依次与新数组后面的数进行大小比较,如果大于被比较的数,则与之交换位置,如果小于等于,则停止比较,
(1)2与23比较,2<23,停止比较。

当完成第五步的时候,我们的冒泡排序就已经完成了,而这个原理的基本思想就是比较和交换。下面使用java代码实现该功能:

class BubbleSort{
	public static void main(String[ ] args){
	//定义上文中的整数数组
	int [ ] arr={2,1,34,23,2,46}; 
	//调用bubbleSort方法,传入参数 数组arr
	bubbleSort(arr);
	}
	//定义一个冒泡排序方法,无返回值,排序结果直接在方法中打印。
	static void bubbleSort(int [ ] arr1){
		//第一层循环控制数组中的每一个数与后面的数进行大小比较
		for(int i=0;i < arr1.length-1;i++){
			/*
			第二层循环控制每一个数分别与后面的数比较,并交换位置。
			jarr[j+1]){
					//定义一个盒子作为中间变量进行两个数的交换交换
					int box=arr1[j];
					arr1[j]=arr1[j+1];
					arr1[j+1]=box;
				}		
			}	
		}
	            	//使用增强for循环遍历排序后的数组并打印。
		for(int a:arr1){
			System.out.print(a+” ”);
		}
	}
}

你可能感兴趣的:(Java 初学者进阶——bubble sort (冒泡排序))