1、原理
- 比较两个相邻的元素,将值大的元素交换到右端。
2、思想
- 依此比较相邻两个数,小的数放在前面,大的数放在后面
- 第一趟比较第1,2个数,小前大后;比较第2,3个数,小前大后,直至比较到把其中最大数放到最右端
- 第一趟之后,最后一个一定最大,比较第二趟,第二趟第一个不参与,把第二大的数放到倒数第二个位置
- 第二趟之后,倒数第二个数第二大,第三趟最后两个数不参与
- 依此类推,每一趟比较次数-1
3、示例
- 数组如下:
int[] arr = {6,3,8,2,9,1}
-
具体执行如下:
- 备注
- N个数字排序,进行 N-1趟排序
- 每趟排序次数为 N-i-1次
- 双重循环 外层控制趟数,内层控制每一趟排序次数
4、代码实现
package com.tmf;
public class Test16 {
public static void main(String[] args) {
int[] arr = {6,3,8,2,9,1};
sort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void sort(int[] arr) {
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 temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp;
}
}
}
}