在java中我们通常需要对数组进行排序,增加阅读性。我们常用的就是选择排序和冒泡排序,选择排序在我之前的文章已经写过了,今天我们就来说一说这个冒泡排序。
冒泡排序是相邻的两个元素进行比较如果符合条件就换位,我们会发现最值在最后位,然后下次比较的话最后一位就不用参与比较了。原理就如图所示。
那么代码我们该怎么编写?我们可以发现每次循环都是从0角标开始的。然后我们开始写代码。
class Demo
{
public static void selectSort(int [ ] arr)
{
for(int x=0;x<arr.length;x++ )
{
for(int y=x+1;y<arr.length;y++ )
{
if(arr[x]>arr[y])
{
int temp=arr [x];
arr [x]=arr [y];
arr [y]=temp;
}
}
}
}
public static void main(String[ ] args)
{
int [ ]arr = {5,1,6,4,2,8,9};
//排序前
printArray(arr);
// selectSort(arr);//选择排序
bubblesort(arr);
//排序后
printArray(arr);
}
public static void bubblesort(int [ ] arr)
{
for(int x=0;x<arr.length-1;x++ )
{
for(int y=0;y<arr.length-x-1;y++ )
{
if(arr[y]>arr[y+1])
{
int temp=arr [y];
arr [y]=arr [y+1];
arr [y+1]=temp;
}
}
}
}
public static void printArray(int [ ] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x ]+",");
else
System.out.println(arr[x ]+"]");
}
}
}
这个代码之中包括了之前的选择排序和冒泡排序,我们在用那个排序直接调用即可。我们在写这个冒泡排序的代码是一定要注意y<arr.length-x-1这个后面的-1,因为如果没有这个-1的话会运行是会运行的,但是排序是排不了的。会出现如图所示。
只会出现排序前的数组,出现不了排序后的数组。
然后我们写上-1之后就会正常运行并且出现我们想要的结果了。
这个冒泡排序和选择排序其实相差不太大,我们掌握原理之后再写代码就会简单许多,这两个排血在我们日常使用是都可以用的,主要看自己掌握的熟练程度。