黑马程序员技术交流社区

标题: 数组排序(选择排序,冒泡排序,快速排序) [打印本页]

作者: jauliun    时间: 2015-12-30 23:24
标题: 数组排序(选择排序,冒泡排序,快速排序)
     /**
         *将数组中的两个指定下标的元素交换位置          
         *@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);
                        }
        }
作者: wyb414    时间: 2015-12-30 23:35
楼主不错.....
作者: pllaoyao    时间: 2015-12-31 00:07
看着好简单,但是自己做的时候就懵逼了...哎....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2