一,算法原理
冒泡排序是交换排序的一种,原理是通过比较相邻两个元素的大小,如果发现顺序不对,就交换这两个元素的位置。当第一次循环结束时,最大的元素就被筛选出来,然后进入第二次循环,以此类推,直到没有任何一对数据进行比较。
下面看一个案例:
假设有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
至此排序完成。
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;
}
}
}
}
}