Java学习——排序算法之冒泡排序
排序算法有很多,我们今天来学习其中的一种,冒泡排序
百度百科是中这样解释的:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
我们来看一下冒泡排序的原理图就很清晰了:
public class Test {
/*
冒泡排序
*/
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr = {5,3,1,8,2};
/*
*排序
*外层循环控制轮数,我们在图中分析得出,一共是数组中元素个数-1轮,
*所以这里是arr.length-1
*/
for (int i = 0; i < arr.length-1; i++) {
/*
* 里层循环控制排序,
* 当第一轮时:两两比较至最后以个下标处,即arr.length-1-0
* 第二轮时:比较至arr.length-1-1处
* 第三轮时:比较至arr.length-1-2处
* 第四轮时:比较至arr.length-1-3处
* 所以:j<arr.length-1-i
*/
for (int j = 0; j < arr.length-1-i; j++) {
//在比较时,如果前面的数大于后面的数,大的往后放
if (arr[j]>arr[j+1]){
//定义一个临时变量,用来交换两个值
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//排序完成之后,使用Arrays打印数组中的元素
System.out.println(Arrays.toString(arr));
}
}
/*
* 输出结果:[1, 2, 3, 5, 8]
*/