java简单排序

来源:互联网 发布:多益网络面试 策划 编辑:程序博客网 时间:2024/06/04 00:39

1:冒泡排序

把最小的数据一个个往上冒,然后进行比较,排序。

package CH02;

public class BubbleSort {
    
    //一个静态方法,里面传入一个long的数组
    public static void sort(long[] array){
        //首先声明一个临时变量
        long temp =0;
        //        思考如何排序呢?首先是一个循环,i表示这是第几趟

       //i=0,意思是数组第一个的值

          for (int i = 0; i < array.length-1; i++) {
            //里面的循环是比较,j是从最后开始的

           //j=array.length-1意思是数组最后一个数

            for (int j =array.length-1; j >i; j--) {
                //里面进行比较
                if(array[j]<array[j-1])//如果后面的数据小于前面的数据
                {
                    //就把2个进行交换
                    temp =array[j];//临时储存
                    array[j]=array[j-1];
                    array[j-1]=temp;
                }
            }
        }
    }
    public static void main(String[] args) {

    }
}

测试代码

package CH02;

public class Test {
    public static void main(String[] args) {
        long[] array = new long[5];
        array[0]=12;
        array[1]=90;
        array[2]=24;
        array[3]=29;
        //用for循环
        for (long num :array) {
            System.out.print(num +" ");
        }
        //接着对她进行排序
        BubbleSort.sort(array);
        System.out.println("排序后的数组");
        //用for循环
        for (long num :array) {
            System.out.print(num +" ");
        }
    }
}


2:选择排序

选择排序多出了K,K总是记下最小的值

package CH02;

public class SelectSort {
    public static void sort(long[] arr){
        //首先定义一个K,默认她为0
        int k= 0;
        //临时变量
        long temp=0;
        //外面的循环指向多少趟
        for (int i = 0; i < arr.length-1; i++) {
            //在里面K=i的
            k=i;//k指向的每次循环的最开始的位置,比如第二趟指向的是1
            for (int j = i; j < arr.length; j++) {
                if(arr[j]<arr[k]){
                    k=j;//因为k是最小的值,意思是说,指向比k还小的,就让k等于这个更小的值
                }
            }    
            //选择到了最小的数据了以后呢,我就把k的值和最开始的数据交换
            temp =arr[i];//先存起来
            arr[i]=arr[k];//这里如果是arr[k]=arr[i]的话就无法进行排序
            arr[k]=temp;
        }
    }
}

测试代码

package ch02;

public class TestSort {
    public static void main(String[] args) {
        long[] arr = new long[5];
        arr[0] = 34;
        arr[1] = 23;
        arr[2] = 2;
        arr[3] = 1;
        arr[4] = -4;
        
        System.out.print("[");
        for(long num : arr) {
            System.out.print(num + " ");
        }
        System.out.print("]");
        System.out.println();
        
        InsertSort.sort(arr);
        
        System.out.print("[");
        for(long num : arr) {
            System.out.print(num + " ");
        }
        System.out.print("]");
        System.out.println();
        
    }
}


3:插入排序

思想:

j它是从第二数开始,然后第二数和第一个数比较,

package CH02;

public class InsertSort {
    public static void sort(long[] arr){
        long temp=0;
        //因为是从第二个数开始,所以i=1
        for (int i = 1; i < arr.length; i++) {
            temp=arr[i];//temp的初始值等于i
            int j=i;
            while(j > 0 && arr[j]>=temp){
                //如果arr[j]>=temp,全部都进行右移
                arr[j]=arr[j-1];
//                右移的时候,j进行--
                j--;
            }
            //最后整个右移完成以后,j所对应的位置为就是我的插入点
            arr[j]=temp;
        }
    }
}

测试代码

package CH02;

public class Test {
    public static void main(String[] args) {
        long[] arr= new long[5];
        arr[0]=34;
        arr[1]=23;
        arr[2]=2;
        arr[3]=1;
        arr[4]=-4;
        //用for循环
        for (long num2 :arr) {
            System.out.print(num2 +" ");
        }
        //接着对她进行排序
        InsertSort.sort(arr);
        System.out.println("排序后的数组");
        //用for循环
        for (long num :arr) {
            System.out.print(num +" ");
        }
    }
}


0 0
原创粉丝点击