Java三大排序(冒泡,选择,插入)

冒泡,选择,插入,这三个排序应该是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于初学者而言能起到锻炼编程思维的作用。废话不多说,下面进入正题。
冒泡排序
冒泡排序的就是让大的数向后冒,让小的数向前冒。通过前后两个数据比较,不断将大的元素移动到尾部。

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int []arr= {-10, 2, 3, 246, -100, 0, 5};
        for(int i=0;i<arr.length-1;i++) {
            for(int j=0;j<arr.length-i-1;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int a:arr) {
            System.out.print(a+" ");
        }
    }

选择排序
选择排序就是把无序区的最小元素与首元素互换位置,然后将有序区的区间扩大一位,直到所有无序区都变成有序区。


public static void main(String[] args) {
        // TODO Auto-generated method stub
        int []arr= {-10, 2, 3, 246, -100, 0, 5};
        for(int i=0;i<arr.length-1;i++) {
            int k=i;
                  //位置还不确定的数据
            for(int j=i+1;j<arr.length;j++) {
                if(arr[j]<arr[k]) {
                    k=j;
                    //遍历找到比k小的索引,然后把j赋给k;
                }
            }
            if(i!=k) {
                int temp=arr[i];
                arr[i]=arr[k];
                arr[k]=temp;
            }
        }
        for(int a:arr) {
            System.out.print(a+" ");
        }
    }

插入排序
插入排序是把数组分为有序区和无序区两块,然后将无序区的指定索引的数插入到有序区的指定位置,假设第0个元素是已经排序好的,无序区第一次循环从1开始遍历,设置一个temp,找到要插入的位置,把temp插入到有序区指定位置。


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int []arr= {-10, 2, 3, 246, -100, 0, 5};
        int j=0;
        for(int i=1;i<arr.length;i++) {
            int temp=arr[i];
            //temp存放将要插入的数据
            if(arr[i]<arr[i-1]) {
                for( j=i-1;j>=0&&arr[j]>temp;j--) {
                    arr[j+1]=arr[j];
                    //temp的位置空出来,把第j个的值赋给第j+1个;
                }
                arr[j+1]=temp;
            }
        }
        for(int a:arr) {
            System.out.print(a+" ");
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_36109477/article/details/82387082