A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 千殇轮回 中级黑马   /  2014-4-16 21:35  /  917 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2.         数组的两种排序方法
  3.         1:选择排序
  4.         2:冒泡排序
  5. */

  6. class ArrTest
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 int[] arr = new int[]{12,34,17,24,23,6,67,32,57,14};

  11.                  selectArr(arr);

  12.                  System.out.println("\n=============================================");

  13.                  int[] arr2 = new int[]{12,34,7,24,23,60,67,32,57,4};

  14.                  selectArr2(arr2);
  15.         }

  16.        
  17.            //选择排序
  18.                 public static void selectArr(int[] arr)
  19.                 {
  20.                         //用于记录排序的次数
  21.                         int count = 0;

  22.                         //排序数组
  23.                         for (int i=0;i<arr.length-1;i++)
  24.                         {
  25.                                
  26.                                 for (int j=i+1;j<arr.length;j++)
  27.                                 {
  28.                                         if (arr[i]>arr[j])
  29.                                         {
  30.                                                 int temp = arr[i];
  31.                                                         arr[i] = arr[j];
  32.                                                         arr[j] = temp;
  33.                                         }
  34.                                        
  35.                                 }
  36.                                                         count++;

  37.                                 System.out.println("第"+count+"次排序");

  38.                                 //遍历每次排序后的数组,能让我们看清每次数组是怎么排序的
  39.                                 for (int k=0;k<arr.length;k++)
  40.                                 {
  41.                                         System.out.print(arr[k]+" ");
  42.                                 }
  43.                                 //用于换行
  44.                                 System.out.println();
  45.                         }
  46.                        
  47.                
  48.                 }




  49.                         //冒泡排序
  50.                         public static void selectArr2(int[] arr)
  51.                         {
  52.                                 //用于记录排序的次数
  53.                                 int count = 0;

  54.                                 //排序数组
  55.                                 for (int i=0;i<arr.length-1;i++)
  56.                                 {

  57.                                         for (int j=0;j<arr.length-1-i;j++ )
  58.                                         {
  59.                                                 if (arr[j]>arr[j+1])
  60.                                                 {
  61.                                                         int temp = arr[j];
  62.                                                         arr[j] = arr[j+1];
  63.                                                         arr[j+1] = temp;
  64.                                                 }

  65.                                                        
  66.                                         }
  67.                                                                                 count++;

  68.                                                 System.out.println("第"+count+"次排序");

  69.                                                 //遍历每次排序后的数组,能让我们看清每次数组是怎么排序的
  70.                                                 for (int k=0;k<arr.length;k++)
  71.                                                 {
  72.                                                         System.out.print(arr[k]+" ");
  73.                                                 }
  74.                                                 //用于换行
  75.                                                 System.out.println();
  76.                                
  77.                                 }

  78.                         }

  79. }
复制代码

点评

已经有很多人分享过这资源了  发表于 2014-4-16 21:41

4 个回复

倒序浏览
唉!我刚学java基础,这技术分好难弄啊
回复 使用道具 举报
public class ArrayTools{
       
        private ArrayTools(){}
       
        /**
         * 初始化数组
         * @param arr 指定一个int数组 length是指数组的长度
         *  没有返回值
         * */
       
        public static void initArr(int []arr,int SIZE){
                for (int i=0;  i<SIZE; i++){
                        arr[i] = (int)(Math.random()*100+1);
                }
        }
                /**
                 * 打印数组
                 * @param 指定一个int数组 SIZE 是指数组的长度
                 *
                 */public static void intputArr(int []arr, int length){
                                System.out.print("[");
                                for (int i=0;  i<length; i++){
                                        if ( i == length-1){
                                                System.out.print( arr[i] );
                                        }
                                        else {
                                                System.out.print( arr[i]+"," );
                                        }
                                }
                                System.out.print("]");
                                }
                         /**
                         * 输出数组
                         * @param 指定一个int数组 length是指数组的长度
                         * 没有返回值
                         */
                        public static void buddleArray(int []arr,int length){
                                for (int i=0; i<length-1; i++){
                                        for (int j=0; j<length-1-i; j++){
                                                if( arr[j] > arr[j+1] ) {
                                                        Swap(arr ,j , j+1);
                                                }
                                        }
                                }
                        }
                        /**
                         *交换数组中的值
                         * @param 指定一个int数组  x y 分别是数组当中的标
                         * 没有返回值
                         */
                        public static void Swap (int []arr, int x, int y){
                                if ( arr[x] > arr[y]){
                                        int temp = 0;
                                         temp = arr[x] ;
                                         arr[x] = arr[y];
                                         arr[y] = temp;
                                }
                        }
                       
                /**
                 * 获得数组中的最大值
                 * @param   指定一个int数 length是指数组的长度
                 * @return  有返回值 返回的是数组中的最大值
                 * */
                 public static int getMax (int []arr, int length){
                                int max = 0;
                                for (int i = 1; i<arr.length; i++){
                                                if(max < arr[i] )
                                                        max  = arr[i];
                                        }
                                return max;
                        }
                 
                 /**
                         * 获得数组中的最小值
                         * @param   指定一个int数 length是指数组的长度
                         * @return  有返回值 返回的是数组中的最小值
                         * */
                 public static int getMin (int []arr, int length){
                                int min = 0;
                                for (int i = 1; i<arr.length ; i++){
                                                min =  arr[0];
                                                if (min >  arr[i] )
                                                        min  = arr[i];
                                        }
                                return min;
                        }
                 
                         /**
                         * 查找
                         * @param   指定一个int数  length是指数组的长度 value 要查找的值
                         * @return  在数组中用无序查找找到想要的值
                         * */
                 public static int unOderFind (int []arr,  int value){
                                int  index = 0;
                                int  i  = 0;       
                                while (i <= arr.length-1 ) {
                                        if( arr[i] == value){
                                           index = i;
                                           break ;
                                           }
                                        else {
                                                index = -1;
                                        }
                                        i++;
                                }
                                return index;
                        }
                         /**
                         * 二分查找
                         * @param   指定一个int数  lvalue 要查找的值
                         * @return  在数组中用无序查找找到想要的值
                         * */
                 
                 public static int halfFind (int []arr, int value){
                                int  max = arr.length-1;
                                int  min = 0 ;
                                int mid =  (max + min)/2;
                                int i= 0;
                                while(i <= arr.length){
                                        if( value > arr[mid]){
                                           min = min + 1;
                                          
                                        }
                                        else if(value < arr[mid]){
                                                max = mid -1;
                                        }
                                        else if(value == arr[mid]){
                                                break ;
                                        }else
                                                mid = -1;
                                        i++;
                                        mid =  (max + min)/2;
                                }
                                return mid;
                        }
                         /**
                         *用选择排序
                         * @param   指定一个int数length 为数组 的长度
                         *   没有返回值
                         * */
                 public static void  selectOrder(int []arr, int length){
                                for(int i=0 ;i<length; i++){
                                        for(int j = i+1; j<length-1; j++)
                                                Swap(arr ,i ,j);
                                }
                               
                        }
        }


下面是主类

public class ArrayToolsTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                final int SIZE = 10;
                int find1= 34;
                int find2 = 31;
                int []arr = new int[SIZE];
               
                int []arr1 = {25,37,52,34,15,78,62,94,31,49};
               
                ArrayTools.initArr(arr, SIZE); // 初始化数组
                ArrayTools.intputArr(arr, SIZE); //输出数组
                System.out.println("冒泡排序后:");
                ArrayTools.buddleArray(arr, SIZE);//用冒泡排序
               
               
                ArrayTools.intputArr(arr, SIZE); //打印数组
                System.out.println("数组中的最大数据是:\t"+ArrayTools.getMax(arr, SIZE)); //h获取数组当中的最大值
                System.out.println("数组中的最小数据是:\t"+ArrayTools.getMin(arr, SIZE)); //h获取数组当中的最大值//或的数组当中的最小值
               
                // 用无序查找
                int index =  ArrayTools.unOderFind(arr1, find1);
                if(index == -1)
                        System.out.println("你调用的是无序查找 \t抱歉你要查找 的这个数据    "+find1+"不存在于数组arr1当中");
                else
                        System.out.println("你调用的是无序查找 \t恭喜你你要查找的数据"+find1+"在于数组arr1当中"+"数组的下标是\t"+ index);
                System.out.println();
               
                //二分查找
                int   mid =  ArrayTools.halfFind(arr1, find2);
                if( mid == -1)
                        System.out.println("你调用的是二分查找 \t抱歉你要查找 的这个数据"+find2+"不存在于数组arr1当中");
                else
                        System.out.println("你调用的是二分查找 \t恭喜你你要查找的数据"+find2+"在于数组arr1当中"+"数组的下标是\t"+ mid);
               
                ArrayTools.intputArr(arr1, SIZE); //输出数组
               
                ArrayTools.selectOrder(arr1, SIZE);//选择排序
                System.out.println();
                ArrayTools.intputArr(arr1, SIZE); //输出数组
               
               
        }

}
回复 使用道具 举报
千殇轮回 发表于 2014-4-16 22:00
唉!我刚学java基础,这技术分好难弄啊

多回答一些问题就好了啊 ,不知不觉都49分了。
然后就是有各种活动,你注意一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马