思路:
1、首先在第一轮排序中,数组从第一个元素到倒数第二个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
2、经过第一轮比较,最大的元素就已经存储到数组最右边的结点中了。
3、第二轮排序则是从第一个元素到倒数第三个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么两个元素就互换。
4、依照此方式,一直到只有第一和第二个元素互相比较而结束。
class ArrayDemo5
{
public static void main(String []args)
{
int[] arr={12,4,23,46,9};
print(arr);
bubbleSort(arr);
print(arr);
}
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)//最后一个元素是不能和相邻元素比较的,所以到length-1
{
for(int y=0;y<arr.length-x-1;y++)//减x是让每次比较的元素减少,减1是防止数组角标越界
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
public static void swap(int[] arr,int a, int b)
{
int temp=arr[a];
arr[a]=arr;
arr=temp;
}
public static void print(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.print(arr[x]);
}
System.out.println("]");
}
}
|
|