AJPFX关于java数组排序

/**
*将数组中的两个指定下标的元素交换位置
*@param arr 要交换元素的数组引用地址值
*@param a 数组索引
*@param b 数组索引
*/
private static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}

     /**
     *冒泡排序
     *@param arr 将要排序的数组引用地址值
     *@param type true表示顺序排序,false表示逆序排序
     */
     public static void bubbleSort(int[] arr, boolean type){                
             if(type){
                      for(int i=0;i<arr.length-1;i++){
                            for(int j=0;j<arr.length-1-i;j++){
                                            if(arr[j]>arr[j+1]){
                                                    swap(arr,j,j+1);
                                            }
                            }
                    }
             }else{
                            for(int i=0;i<arr.length-1;i++){
                                    for(int j=0;j<arr.length-1-i;j++){
                                            if(arr[j]<arr[j+1]){
                                                    swap(arr,j,j+1);
                                            }
                                    }
                            }
             }
     }

      /**
     *选择排序
     *@param arr 将要排序的数组引用地址值
     *@param type true表示顺序排序,false表示逆序排序
     */
     public static void selectSort(int[] arr,boolean type){
             if(type){
                     for(int i=0;i<arr.length-1;i++){
                             for(int j=i;j<arr.length;j++){
                                     if(arr[i]>arr[j]){
                                             swap(arr,i,j);
                                     }
                             }
                     }
             }else{
                     for(int i=0;i<arr.length-1;i++){
                             for(int j=i;j<arr.length;j++){
                                     if(arr[i]<arr[j]){
                                             swap(arr,i,j);
                                     }
                             }
                     }
             }
     }        

     /**
     *快速排序
     *@param arr 将要排序的数组引用地址值
     *@param l 数组索引的初始位置
     *@param r 数组的长度-1
     *@param type true表示顺序排序,false表示逆序排序
     */
     public static void  quicklySort(int[] arr,int l,int r,boolean type){
                     if(l<r){
                            int i=l,j=r,x=arr[i];
                            if(type){
                                     while(i<j){
                                            while(i<j&&arr[j]>x)
                                                    j--;
                                            if(i<j)
                                                    arr[i++]=arr[j];
                                            while(i<j&&arr[i]<x)
                                                    i++;
                                            if(i<j)
                                                    arr[j--]=arr[i];
                                    }
                            }else{
                                     while(i<j){
                                            while(i<j&&arr[j]<x)
                                                    j--;
                                            if(i<j)
                                                    arr[i++]=arr[j];
                                            while(i<j&&arr[i]>x)
                                                    i++;
                                            if(i<j)
                                                    arr[j--]=arr[i];
                                    }
                            }
                            arr[i]=x;
                            quicklySort(arr,l,r-1,type);
                            quicklySort(arr,l+1,r,type);
                    }
    }

猜你喜欢

转载自blog.csdn.net/AJPFX/article/details/90170569