冒泡排序(默认是升序)
目标:
将数组元素按照从小到大的顺序排列。
思路:大的数“下沉”,小的数“上浮”。
比较相邻的两个元素,将大的数放在右边,小的数放在左边。
- 第一趟循环:比较第一个和第二个数,如果第一个数小于第二个数,顺序不变,反之就交换两个数的位置;接着比较第二和第三个数,方法同上,直到比较完最后两个数,将大的数放在右边,小的放左边。
结果:第一趟完成后,最后一个数就是该数组元素最大的元素。 - 第二趟循环:最后一个数(最大的数)不参与循环,按着第一步的方法继续比较、交换。
结果:第二趟完成后,倒数第二个数就是(仅次于倒数第一个最大的数)倒数第二大的。 - 第三趟循环:最后两个数不参与循环。。。(以此类推,每次的比较次数-1)
… - 排序完成
代码如下:
//冒泡排序(默认为升序)
public class BubbleSort {
public static void main(String[] args) {
int[] data=new int[] {2,3,5,6,8,9,0,1,4,7};
sort(data);
printArray(data);
}
public static void sort(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) {
for(int x=0;x<arr.length;x++) {
System.out.print(arr[x]+" ");
}
}
}
运行结果:
0 1 2 3 4 5 6 7 8 9