简单排序之冒泡排序、选择排序、插入排序

简单排序之冒泡排序、选择排序、插入排序,第1张

简单排序之冒泡排序、选择排序、插入排序

冒泡排序
最近需要学习数据结构与算法,重新回顾一下之前的内容,补一下之前的课。
冒泡排序个人理解就是让最大的元素浮出水面,像吐泡泡一样一个一个浮出来。
具体是元素两两进行比较如果当前大于另一个元素交换,继续比较,直到最后。
代码主要是Bubble类和测试类完成。
Bubble.class

public class Bubble {
//    对数组a的元素进行排序
    public static void sort(Comparable[] a){
        for(int i=a.length-1;i>0;i--){
            for (int j=0;j0;
    }

//    数组元素i和j交换位置
    private  static  void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] =temp;
    }

BubbleTest.class

public class BubbleTest {
    public static void main(String[] args) {
        Integer[] arr = {4,5,6,3,2,1};
        Bubble.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

选择排序
选择排序个人理解就是每次将最小元素选出来放到合适的位置。
具体是将第一个元素假设为最小元素,逐次比较,当当前元素大于比较元素时,将最小元素标记索引指到比较元素上,直到真正最小元素出现,将最小元素与第一个元素交换,第一次选择排序完成。

Selection.class

public class Selection {

    //对数组a中的元素进行排序
    public static void sort(Comparable[] a){
        for(int i=0;i<=a.length-2;i++){
            //定义一个变量,记录最小元素所在的索引,默认为参与选择排序的第一个所在元素的位置
            int minINdex = i;
            for(int j=i+1;j0;
    }

    //数组元素i与j交换位置
    private  static  void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] =temp;
    }
}

SelectionTest.class

public class SelectionTest {
    public static void main(String[] args) {
        //原始数据
        Integer[] a = {4,6,8,7,9,2,10,1};
        Selection.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

插入排序
插入排序个人理解就是将无序的元素插入到有序的元素中。
具体做法是假设首元素为有序元素,选第二个为无序,两两比较,首元素大于第二元素交换,此时两个元素为有序组,之后继续选取无序元素比较即可。

Insertion.class

public class Insertion {
    //    对数组a的元素进行排序
    public static void sort(Comparable[] a){
        for (int i=1;i< a.length;i++){
            for(int j=i;j>0;j--){
                //比较索引j处的值和索引j-1处的值,如果索引j-1的值大于j处的值,则交换数据,如果不大,那么就找到合适的位置了,退出循环即可;
                if (greater(a[j-1],a[j])){
                    exch(a,j-1,j);
                }else {
                    break;
                }
            }
        }
    }

    //    比较v元素是否大于w元素
    private static  boolean greater(Comparable v, Comparable w){

        return  v.compareTo(w)>0;
    }

    //    数组元素i和j交换位置
    private  static  void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] =temp;
    }
}

InsertionTest.class

public class InsertionTest {
    public static void main(String[] args) {
        Integer[] a= {4,3,2,10,12,1,5,6};

        Insertion.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

写在最后
学东西一定要扎扎实实、认认真真,否则当你在从事所学专业相关的工作时,当年懒散的你,需要现在的你花费更多时间去补习当时的缺项,这样的事情多了之后,人生则一直在补课。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5575313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存