冒泡排序
给大家简单介绍一下我对冒泡排序的理解
(一)先简单介绍一下什么叫冒泡排序
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
(二)冒泡排序的分析过程
给定一个数组,首先遍历一遍数组得出其长度大小:arr.length,通过如下简单的数学规律分析可知每一个元素都要进行
arr.length-1-i轮次进行比较
arr.length-1-i
i=0(第1轮) 比3次
i=1(第2轮) 比2次
i=2(第3轮) 比1次
- 经过第一轮比较,即当i=0时,我们可以的得到此轮比较中数组中最大的数据也就是78
i=0 j=0 78和45比,换,45,78,56,4 j=1 78和56比,换,45,56,78,4 j=2 78和4比,换,45,56,4,78-----------78出来了
- 经过第二轮比较,即当i=1时,我们可以的得到此轮比较中数组中最大的数据也就是56
i=1 j=0 45和56比,不换 j=1 56和4比,换,45,4,56,78----------56出来了
- 经过第三轮比较,即当i=2时,我们可以的得到此轮比较中数组中最大的数据也就是45
i=2 j=0 45和4比,换,4,45,56,78----------45出来了
(三)最终实现的代码如下:
package com.helly; public class Sort { public static void main(String[] args) { int[] arr = {78, 45, 56, 4}; //升序(4,45,56,78) //控制轮 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]) { int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; } } } for (int i = 0; i <arr.length ; i++) { System.out.print(arr[i] + ","); } } }