一、排序之冒泡排序

来源:互联网 发布:mac装双系统 编辑:程序博客网 时间:2024/06/05 18:42
Java排序算法之冒泡排序


原理:比较两个相邻的元素,将值大的元素移动到右侧。

思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。

举例说明:要排序数组:int[] arr={4,3,2,1};

第一趟排序:


    第一次排序:[3, 4, 2, 1]

    第二次排序:[3, 2, 4, 1]

    第三次排序:[3, 2, 1, 4]

---------------------------------------------------------------------

第二趟排序:

    第一次排序:[2, 3, 1, 4]

    第二次排序:[2, 1, 3, 4]


---------------------------------------------------------------------

第三趟排序:

    第一次排序:[1, 2, 3, 4]

---------------------------------------------------------------------


最终结果:1 2 3 4

---------------------------------------------------------------------


冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。

用时间复杂度来说:

  1.如果我们的数据正序,只需要走一趟即可完成排序。所需的比较次数和记录移动次数均达到最小值,即:Cmin=n-1;Mmin=0;所以,冒泡排序最好的时间复杂度为O(n)。

  2.如果很不幸我们的数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为:O(n2) 。

综上所述:冒泡排序总的平均时间复杂度为:O(n2) 。

代码实现

package test.javaSE;import java.lang.reflect.Array;import java.util.Arrays;public class Bubble {public static void main(String[] args) {// TODO Auto-generated method stub//顺便温故数组的三种定义        //int arr0[] = new int[4];        //int arr1[] = {2,3,4,1};        int arr[] = new int[]{4,3,2,1};        int t = 1;                for(int i=0;i<arr.length;i++){         //控制循环趟数        for(int j=0;j<arr.length-1-i;j++){ //控制每趟比较次数        int temp = 0;        if(arr[j]>arr[j+1]){        temp     = arr[j];        arr[j]   = arr[j+1];        arr[j+1] = temp;        }          System.out.println("第" +(i+1)+ "趟的第"+(j+1)+"次排序结果是:" + Arrays.toString(arr));        }         System.out.println("******************************");        }        System.out.println("最后结果是:" + Arrays.toString(arr));}}



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两个月小孩不吃奶粉怎么办 两个月的小孩不吃奶粉怎么办 两个多月宝宝不吃奶怎么办 三个多月宝宝不爱吃奶怎么办 4个月宝宝不吃奶怎么办 5个月宝宝不爱吃奶怎么办 九个月宝宝一直流鼻涕怎么办 九个月宝宝一直咳嗽怎么办 宝宝3岁不爱喝水怎么办 1岁宝宝不肯喝水怎么办 三个月宝宝体检说严重缺钙怎么办 1岁半宝宝不吃药怎么办 1岁宝宝抗拒吃药怎么办 六个月宝宝不爱吃辅食怎么办 宝宝九个月了不爱吃辅食怎么办 八个月宝宝不喜欢吃辅食怎么办 小孩米粉吃多了怎么办 宝宝四个月了奶水不足怎么办 4个月奶水不足怎么办 孩子不吃奶粉母乳又不够怎么办 宝宝吃母乳上火了怎么办 5个月宝宝厌奶期怎么办 九个月宝宝不吃奶粉怎么办 第5个月奶不够吃怎么办 九个月的宝宝不吃奶粉怎么办 9个月宝宝不肯吃怎么办 11个月不吃辅食怎么办 4个月母乳不足怎么办 宝宝四个月奶不够怎么办 四个月宝宝奶不够吃怎么办 宝宝吃母乳偏瘦怎么办 宝宝吃母乳很瘦怎么办 8个月宝宝流汗太多怎么办 奶水多乳房胀疼怎么办 乳房胀奶奶水减少怎么办 宝宝五个月奶水不够吃怎么办 梦见鬼在梦里怎么办 宝宝晚上奶水不够吃怎么办 十个月晚上奶水不够吃怎么办 产妇晚上奶水不够吃怎么办 刚出生的宝宝不吃母乳怎么办