JAVA数组排序

1、冒泡排序:

相邻的两个数相比,如果排序不对时,就对调位置;排序对时,不动。

第一轮比较后,有一个最大的数排到最后

第二轮比较后,又有一个较大数排到倒数第二位。

......

以此类推

 

11,6,2,8,22,1,98


七个数


第一轮
第1次6,11,2,8,22,1,98
第2次6,2,11,8,22,1,98
第3次6,2,8,11,22,1,98
第4次6,2,8,11,22,1,98
第5次6,2,8,11,1,22,98
第6次6,2,8,11,1,22,98

共6轮 即7-1
第一轮6次,即7-1,第二轮5次,即7-2

 

public class ArrayDemo4 {

    public static void main(String[] args) {
        int[] arr={11,6,2,8,22,1,98,7};
        printArr(arr);                //排序前
        System.out.println("");
        bubbleSort(arr);
        printArr(arr);                //排序后
    }
    
    static void bubbleSort(int[] array){            //排序函数
        
        for(int x=1;x<array.length-1;x++){            //假设有x个元素,一共要比较x-1轮
            for(int y=0;y<array.length-x;y++){        //第一次是y-1,第二次是y-2次,第三次是y-3次,第x轮是y-x次    
                if(array[y]>array[y+1]){
                    int temp=array[y];
                    array[y]=array[y+1];
                    array[y+1]=temp;
                }
            }
        }
    }
    public static void printArr(int[] arr){        //打印函数。
        for(int i=0;i<arr.length;i++)            
        {
            if(i!=arr.length-1)                //判断非最后一个元素的,输出数组元素,并加逗号。
                System.out.print(arr[i]+",");
            else {                                //最后一个元素,只输出元素,无逗号
                System.out.print(arr[i]);
            }
        }
    }
}

输出:

11,6,2,8,22,1,98,7
1,2,6,7,8,11,22,98

 

 

2、选择排序

第一轮,第1个数和后面的数相比,按大小排,结果是最小的数排最前
第二轮,第2个数和后面的数相比,按大小排,结果是第二小的数排第二位
......
以此类推

一共n-1轮,因为最后一个数不用比

11,6,2,8,22,1,98
6轮

第一轮 和第2个数开始比
第二轮 和第3个数开始比

......

以此类推

 

public class ArrayDemo5 {
    public static void main(String[] args)
    {
        int[] arr={11,6,2,8,22,1,98};
        selectSort(arr);
        printArr(arr);
    }
    static void selectSort(int[] array){        //定义选择排序函数
        for(int x=0; x<array.length-1;x++)        //第一个数开始比,比较length-1轮
        {
            for(int y=x+1;y<array.length;y++)    //和第几个
            {
                if(array[x]>array[y]){
                    int temp = array[x];
                    array[x]=array[y];
                    array[y]=temp;
                }
            }
        }
    }
    public static void printArr(int[] arr){        //定义打印函数。
        for(int i=0;i<arr.length;i++)            
        {
            if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                System.out.print(arr[i]+",");
            else {                                //最后一个元素,只输出元素,无逗号
                System.out.print(arr[i]);
            }
        }
    }    
}

输出:

1,2,6,8,11,22,98

 

 

3、使用API中的排序功能

import java.util.Arrays;                //java.util.Arrays;此类包含用来操作数组(比如排序和搜索)的各种方法

public class ArrayDemo6 {
    public static void main(String[] args)
    {
        int[] arr={12,4,6,2,11,7,3,12,61};
        Arrays.sort(arr);                //Arrays.sort提供了排序方法
        printArr(arr);
        
        
        String[] arr1={"Z", "a", "D"};
        Arrays.sort(arr1);
        printArr(arr1);
    }
    public static void printArr(int[] arr){        //定义一个整数数组的函数。
        for(int i=0;i<arr.length;i++)            
        {
            if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                System.out.print(arr[i]+",");
            else {                                //最后一个元素,只输出元素,无逗号
                System.out.print(arr[i]);
                System.out.println("");
            }
        }
    }
    public static void printArr(String[] arr){   //定义一个字符串数组的函数。
        for(int i=0;i<arr.length;i++)            
        {
            if(i>=0 & i<arr.length-1)            //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1
                System.out.print(arr[i]+",");
            else {                               //最后一个元素,只输出元素,无逗号
                System.out.print(arr[i]);
                System.out.println("");
            }
        }
    }
}

输出:

2,3,4,6,7,11,12,12,61
D,Z,a

posted @ 2017-02-15 10:27  自学开发的老司机  阅读(634)  评论(0编辑  收藏  举报