首页 > 代码库 > 选择排序和冒泡排序的实现

选择排序和冒泡排序的实现

   //选择排序

        /*实现原理:数组的每一个数都和它后面的每一个数进行比较,找到从它本身到数组结束的最值(这里是最小值),把它和最值得位置进行交换。从而实现排序*/
    @Test
    public void selectSort() {
      
        int[] nums = new int[] {4,8,5,7,6,2,4,9,5,7,3,5};      //定义一个无须数组


        for(int i = 0; i < nums.length - 1; i++) {                   //因为数组的最后一位没有可以比较的了,所以取到数组的倒数第二位


            for(int j = i+1; j < nums.length;j++) {                   //因为是每个数和它后面的数比较,所以从i+1的位置开始比较


                if(nums[i] > nums[j]) {                                      //控制升序排序,把大于改成小于就是降序排序    

             
                    int temp = nums[i];                                     //交换位置操作
                    nums[i] = nums[j];
                    nums[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(nums));
    }
    

 

 

 


    //冒泡排序

/*实现原理:数组的每一个数都只和它后面的紧挨着的一个数进行比较,把两个数中较大的一个数挪到后面。

  这样每一趟完整的比较,最大值都会被挪到最后面,从而实现升序排序*/
    @Test
    public void bubbleSort() {
      
        int[] nums = new int[] {4,8,5,7,6,2,4,9,5,7,3,5};      //定义一个无须数组
       
        for(int i = 0; i < nums.length - 1; i++) {                //第一层的循环是控制总共需要进行多少次完整的比较


            for(int j = 0; j < nums.length -1 -i;j++) {           /*每一次完整的比较,最大的数都被挪到最后面, 所以,后面的数已经排序好了,比较的一直是前面的数。 length-i-1是因为,

                           有i个数已经被挪到最后面了, 这i个数已经是排序好的了,不用比较。 -1是因为, 比较的两个数的的索引是j和j+1*/
                if(nums[j] > nums[j+1]) {                            //控制升序排序,把大于改成小于就是降序排序
                 
                    int temp = nums[j];                                //交换位置操作
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(nums));
    }

选择排序和冒泡排序的实现