您的位置:首页 > 编程语言 > Java开发

java简单排序

2016-12-20 17:58 435 查看
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 +" ");

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: