资讯专栏INFORMATION COLUMN

Java排序-冒泡排序、插入排序和选择排序

gityuan / 1311人阅读

摘要:插入排序特殊从第二个元素开始,和第一个元素比较,如果满足排序的顺序,则交换顺序。优化后选择排序从第一个位置开始遍历待排序的元素,找到最小值和第一元素交换从位置开始往后遍历,找到之后元素中的最小值,和第个元素交换位置。

插入排序
1、特殊:从第二个元素开始,和第一个元素比较,如果满足排序的顺序,则交换顺序。
2、一般:把待比较和他之前的所有元素相比(从右往左),如果满足排序的顺序,这交换。

private static void insertSort(int[] arr){

        for (int i = 1; i < arr.length; i++){ //从第二个元素开始
            for (int j = i; j > 0; j--){ //这个元素和之前的元素比较
                if (arr[j] < arr[j-1]){
                    int temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                }
            }
        }
}

2、冒泡排序
1、从第一个元素开始,和第二个元素相比,如果满足排序条件,则交换
2、把未排序的元素和后面的元素依次比较,如果满足排序条件,则交换

最初

private static void bubbleSort(int[] arr){

        for (int i = 0; i < arr.length-1; i++){
            for (int j = 0; j < arr.length - 1; j++){
                if (arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
}

因为每次循环后,i前面的元素已经排好序。所以可以进行优化。
优化后:

private static void bubbleSort(int[] arr){

        for (int i = 0; i < arr.length-1; i++){
            for (int j = i+1; j < arr.length - 1; j++){
                if (arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
}
    

3、选择排序
1、从第一个位置开始遍历待排序的元素,找到最小值和第一元素交换
2、从位置i开始往后遍历,找到i之后元素中的最小值,和第i个元素交换位置。

private static void selectSort(int[] arr){

        int minLoc,temp;
        for (int i = 0; i < arr.length-1; i++){
            minLoc = i;
            for (int j = i+1; j < arr.length; j++){
                if (arr[j] < arr[minLoc]){
                    minLoc = j;
                }
            }
            temp = arr[i];
            arr[i] = arr[minLoc];;
            arr[minLoc] = temp;
        }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76338.html

相关文章

  • 七大排序算法总结(java)

    摘要:前面介绍了七大算法的思想与实现步骤,下面来做一个归总。直到无序区中的数为零,结束排序。步骤以从小到大为例,排序数组大小为。比较完以后则排序结束。堆排序思想堆排序是采用树的形式的数据结构来进行排序的,其中每一个堆都是完全二叉树。 前面介绍了七大算法的思想与实现步骤,下面来做一个归总。 排序方法 平均复杂度 最坏复杂度 最好复杂度 辅助空间 稳定性 直接选择排序 O(n^2...

    cartoon 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 冒泡排序插入排序选择排序

    摘要:之所以把冒泡排序选择排序插入排序放在一起比较,是因为它们的平均时间复杂度都为。其中,冒泡排序就是原地排序算法。所以冒泡排序是稳定的排序算法。选择排序思路选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法为王。 想学好前端,先练好内功,...

    canger 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列之插入排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segm...

    GeekQiaQia 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列之插入排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segm...

    cgspine 评论0 收藏0

发表评论

0条评论

gityuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<