数组的常见排序算法--冒泡排序,选择排序

数组的排序算法--冒泡排序,选择排序


程序设计中,我们会经常用到数组的排序,方便统计和查询。当然面试的时候也会经常问到
下面是两种比较常见的排序。

1.冒泡排序

基本思想

比较相邻的两个值,如果满足条件就交换值,把小的值移到数组前面,大的移动到后面

算法实现

public class ArraySortBubble {
    public static void main(String[] args) {
        int[] array = new int[]{5,10,20,7,100,50,33,25}; //创建数组
        System.out.println("排序前输出:"+Arrays.toString(array));
        sort(array);//调用排序算法
        System.out.println("排序后输出:"+Arrays.toString(array));
    }

    /**
     * 冒泡排序算法
     * @param array
     * @return
     */
    public static int[] sort(int[] array){
        for (int i = 0;i < array.length-1;i++) {
            for (int j = 0;j < array.length-1-i;j++) {
                //比较相邻两个元素值,较大的值往后冒泡
                if (array[j] > array[j+1]) {
                    int temp = array[j];    //把第一个值保存到临时变量中
                    array[j] = array[j+1];  //把第二个值覆盖第一个值
                    array[j+1] = temp;      //把临时变量覆盖第二个值
                }
            }
        }
        return array;
    }
}

输出结果:
输出结果:

2.选择排序算法

基本思想

将指定排序位置与其他数组元素分别对比,满足条件就交换元素值,每次比较选择出最大(或者最小)的元素,直到全部排序完成。

算法实现

public class ArraySelectSort {
    public static void main(String[] args) {
        int[] array = {5,2,38,69,27,66,11,19,25};
        System.out.println("选择排序前:"+ Arrays.toString(array));
        sort(array);
        System.out.println("选择排序后:"+ Arrays.toString(array));
    }

    /**
     * 直接选择排序
     * @param array 要排序的数组
     * @return
     */
    public static int[] sort(int[] array){
        int index;
        for (int i = 1;i < array.length;i++) {
            index = 0;
            for (int j = 1; j <= array.length - i;j++) {
                if (array[j] > array[index]) {  //选择出数组中最大值的索引坐标
                    index = j;
                }
            }
            //交换在位置array.length-1和index(最大值)上的两个数
            int temp = array[array.length - i];     //最后一个元素值保存到临时变量
            array[array.length - i] = array[index]; //将大的元素值往后移
            array[index] = temp;                    //临时变量复制到交换的变量
        }
        return array;
    }
}

输出结果:
输出结果:

Fighting for a better tomorrow!

猜你喜欢

转载自blog.csdn.net/weixin_40037053/article/details/83928389
今日推荐