冒泡排序

1.基本思想
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。

2.算法示例
冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内层循环主要用于对比数组中每个邻近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。例如,一个拥有6个元素的数组,在排序过程中每一次循环的排序过程和结果如下图所示

排序算法之简单易懂的冒泡排序_冒泡排序
第一轮外层循环时把最大的元素值63移动到了最后面(相应地,比63小的元素向前移动,类似气泡上升),第二轮外层循环不再对比最后一个元素值63,因为它已经被确认为最大(不需要上升),应该放在最后,需要对比和移动的是其他剩余元素,这次将元素24移动到了63的前一个位置。其他循环将以此类推,继续完成排序任务。

3.算法实现(Java)

public int[] popUpSorting(int a[]) {
        System.out.println("开始冒泡排序");
        int temp; //设置中间变量用于交换

        for (int i = 0; i < a.length - 1; i++) {  
            for (int j = i + 1; j < a.length; j++) {     
                if (a[i] > a[j]) {        
             // 第一遍 从第一个元素开始与后面的每一个元素比较 如果后面的那个元素比自身大 就交换 小就继续往下比 直到最后一个  这样第一个元素就是最小的了
            //第二遍    从第二个元素开始与后面的每一个元素比较 如果后面的那个元素比自身大 就交换 小就继续往下比 直到最后一个  这样第二个元素就是最小的了
            //直到倒数第二个与最后一个比完   整个序列就是有序的了
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }

            }

        }
        return a;
    }