代码改变世界

java数组(下)

2018-07-09 10:31  隔壁吃瓜群众  阅读(227)  评论(0编辑  收藏  举报

数组排序算法:

冒泡排序:在程序设计中,经常需要将一组数列排序,这样更加方便统计与查询。

程序常用的排序方法有冒泡排序、选择排序和快速排序等。

使用冒泡排序法来正排序

public class BubbleSort {

    public static void main(String[] args) {
        //创建一个数组,这个数组元素是乱序的
        int[] array={63,4,24,1,3,15};
        //创建冒泡排序类的对象
        BubbleSort sorter=new BubbleSort();
        //调用排序方法将数组排序
        sorter.sort(array);
    }

    
    
    public void sort(int[] array) {
        for(int i=1; i<array.length;i++){
            //比较相邻的两个元素,较大的数往后冒泡
        for(int j=0;j<array.length-i;j++){
            if(array[j]>array[j+1]){
                int temp=array[j];//把第一个元素值保存到临时变量中
                array[j]=array[j+1];//把第二个元素值保存到第一个元素单中
                array[j+1]=temp;//把临时变量(也就是第一个元素原值)保存到第二个元素中
            }
            }
        }
        showAarray(array);
    }


    private void showAarray(int[] array) {
        for(int i:array){
            System.out.println(">"+i);
        }
        System.out.println();
        
    }

}

执行结果为:

>1
>3
>4
>15
>24
>63
直接选择排序的基本思想是将排序位置与其他数组元素分别对比,如果条件满足就交换元素值,
注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。

public class SelectSort {
                          
    public static void main(String[] args) {
        //创建一个乱序的排序数组
        int[] array={63,4,24,1,3,15};
        //创建直接排序类的对象
        SelectSort sorter=new SelectSort();
        //调用排序对象的方法将数组排序
        sorter.sort(array);

    }
    
    public  void sort(int[] array) {
        int index;
        for(int i=1;i<array.length;i++){
            index=0;
            for(int j=1;j<array.length-i;j++){
                if(array[i]>array[index]){
                    index=j;
                }
            }
            //交换在位置Array.length-i和index(最大值)上的两个数
            int temp=array[array.length-i];
            array[array.length-i]=array[index];
            array[index]=temp;
        }
        showArray(array);
    }

//显示所有元素


    public void showArray(int[] array) {
        for(int i:array){
            System.out.println(">"+i);
        }
        System.out.println();
    }

}

执行结果为:

>3
>1
>4
>15
>24
>63

反转排序:

数组的最后元素和第一个元素替换,倒数第二个元素与第二个元素替换依此类推,直接把所有数组元素反转替换

public class ReverseSort {

    public static void main(String[] args) {
        int[] array={10,20,30,40,50};
        ReverseSort sorter=new ReverseSort();
        sorter.sort(array);

    }

    
    public  void sort(int[] array) {
        System.out.println("数组原有内容");
        
        showArray(array);//输出排序前的数组值
        int temp;
        int len=array.length;
        for(int i=0; i<len/2;i++){
           temp=array[i];
           array[i]=array[len-1-i];
           array[len-1-i]=temp;
        }
        System.out.println("数组反转后的内容");
        showArray(array);
    }
 

    
    
    public void showArray(int[] array) {
        for(int i:array){
            System.out.print("\t"+i);
        }
        System.out.println();
    }

}

执行结果为:

数组原有内容
    10    20    30    40    50
数组反转后的内容
    50    40    30    20    10