美文网首页
##Java中选择排序和冒泡排序简析

##Java中选择排序和冒泡排序简析

作者: Allenbin5522 | 来源:发表于2017-03-01 08:27 被阅读0次

    简单来说无论选择排序还是冒泡排序,都是让数组有序化的一种方法,比如一个数组中的一串数字,我们现在希望这组数字能够从小到大,或是从大到小的排列,以便我们对数据的管理,这是就需要了排序。但是实现的思想却略有差异而已,下面我门以同一个数组为例,简析一下两者实现过程上的差异。

    数组 int[] arr = {5, 2, 3, 6, 1};

    选择排序
    思想:每一次排序过程,我们获取当前没有排好序中的元素,从第一个元素开始,依次与其之后的元素比较,两者更小的数排到第一位,然后将第一位的这个数继续与下一位的数比较,直到第一位得到数组中的最小的数。然后从第二位继续上述的操作,以此类推循环这个过程即可实现对整个数组排序。

    //我们可以假设有一个标签,最开始的时候指向第一位的数
    //i < arr.length - 1是因为从第一位的数,到最后一位的数只需比较arr.length - 1次
    //这层循环决定标签在第一位时,比较arr.length - 1次,在这一位比较完成后,标签后移一位,然后以此类推。
    for (int i = 0; i < arr.length - 1; i++){
                //这层循环决定标签在这一位时,这一位的数和后面的数继续比较
                for (int j = i + 1; j < arr.length; j++) {                   
                    if (arr[i] > arr[j]){
                        int temp = arr[j];
                        arr[j] = arr[i];
                        arr[i] = temp;   //第i位的元素和j位的元素互换
                    }
                }
            }
            for(int i: arr){
                System.out.println(i);
            }
    

    从结果来看,第一次比较后的结果依次是 {2, 5, 3, 6, 1} {2, 5, 3, 6, 1} {2, 5, 3, 6, 1} {1, 5, 3, 6, 2},其目的就是将数组中最小的数(1)放倒第一位,然后再进行第二次比较,将
    倒数第二小的数(2)放到第二位,以此类推。

    冒泡排序
    思想:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端,以达到数组从小到大(从大到下)排序的目的。

    int[] arr2 = {5, 2, 3, 6, 1};
            for (int i = 0; i < arr2.length - 1; i++) {
                for (int j = 0; j < arr2.length -1 - i; j++) {
                    if (arr2[j] > arr2[j+1]){
                        int temp = arr2[j+1];
                        arr2[j+1] = arr2[j];
                        arr2[j] = temp;
                    }
                }
            }
            for(int i: arr2){
                System.out.println(i);
            }
    

    分步来看,在第一次的比较过程中,依次得到的结果是 {2,3,5,1,6} {2,3,1,5,6} {2,1,3,5,6} {1,2,3,5,6},不难看出,第一次比较的结果就是将数组中最大的数(6)排到了最后一位,然后第二次比较后的结果就是将剩余的数里最大的那个(5)排到了倒数第二位,然后一次类推。

    相关文章

      网友评论

          本文标题:##Java中选择排序和冒泡排序简析

          本文链接:https://www.haomeiwen.com/subject/hwgxgttx.html