- /*
- * 冒泡排序分析 :
- * 算法思想:
- * 每次相邻的两个进行比较,较大不断后移
- * 最终每趟最大的沉底
- * 示例 :索引 0 1 2 3 4
- * i 5 8 9 1 2
- *
- * 5 8 9 1 2 5<8 不动
- * 第0趟 5 8 9 1 2 8<9 不动
- * 5 8 1 9 2 9>1 交换
- * 5 8 1 2 9 9>2 交换 得出最大值为9 arr[4] = 9
- * 共比较4次
- *
- * 第1趟 5 8 1 2 9 5<8 不动
- * 5 1 8 2 9 8>1 交换
- * 5 1 2 8 9 8>2 交换 得出8为次大 arr[3] = 8
- * 共比较3次
- *
- * 第2趟 1 5 2 8 9 5>1 交换
- * 1 2 5 8 9 5>2 交换 得出5位第三大 arr[2] = 5
- * 共比较2次
- *
- * 第3趟 1 2 5 8 9 1<2 不动 得出2是第四大 arr[1] = 2
- * 共比较1次 剩余元素则为最小 arr[0] = 1
- *
- *
- * 分析得 外圈总共4次,外圈第0次循环内圈是4次
- * 外圈第1次循环内圈是3次
- * 外圈第2次循环内圈是2次
- * 外圈第3次循环内圈是1次
- * 定义外圈变量 x = 0 ;则内圈是从0 - 4 也就是小于5
- * x = 1 , y 是 0 - 3 也就是小于4 5 - 1
- * x = 2 . y 是 0 - 2 也就是小于3 5 - 2
- * x = 3 . y 是 0 - 1 也就是小于2 5 - 3
- *
- */
- public class BubbleSort {
- /**
- * @param args
- */
- static int[] arr = {5,8,9,1,2};
- public static void main(String[] args) {
- sortArr();
- printArr();
- }
- public static void printArr() {
- System.out.print("[");
- for (int i = 0; i < arr.length; i++) {
- if(i!=arr.length-1){
- System.out.print(arr[i]+" ,");
- }else{
- System.out.println(arr[i]+"]");
- }
- }
- }
- public static void sortArr() {
- 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]){
- swap(arr,j,j+1);
- }
- }
- }
- }
- private static void swap(int[] arr, int i, int j) {
-
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
-
- }
- }
复制代码 |
|