黑马程序员技术交流社区

标题: 关于数组操作的那些事儿~~个人总结 [打印本页]

作者: 羽狼之翼    时间: 2015-1-8 20:43
标题: 关于数组操作的那些事儿~~个人总结
今天来给大家分享下,数组常见的操作,代码比较简单,可能也总结的不全乎,就当作回忆一下知识吧。

//关于数组操作的一些方法
class TheArrayDemo {
       
        //位置置换方法(不需要提供出去,所以设为private)
        private static void swap(int [] arr,int x,int y)
        {
                int temp = arr[x];
                arr[x] = arr[y];
                arr[y] = temp;
        }
       
        //冒泡排序
        public static void bubbleSort(int []arr)
        {
                //外层一共比较arr.length-1次,因为最后一个数不用比。
                for ( int x=0; x<arr.length-1; x++)
                {
                        //外层每比较一次,内层需要比较的次数就少一次,所以和x关联上,
                        //减1是为了防止y+1越界。
                        for ( int y=0; y<arr.length-x-1; y++)
                        {
                                if (arr[y]>arr[y+1])
                                {
                                        //调用位置置换的方法
                                        swap(arr,y,y+1);
                                }
                        }
                }
        }
       
        //选择排序
        public static void selectSort(int [] arr)
        {
                for (int x=0; x<arr.length; x++)
                {
                        //y从x+1开始和x角标的值进行比较,因为当前角标和当前角标比,没有意义。
                        for (int y=x+1; y<arr.length; y++)
                        {
                                if(arr[x]>arr[y])
                                {
                                        //调用位置置换的方法
                                        swap(arr,x,y);
                                }
                        }
                }
        }
       
        //打印数组
        public static void printArray(int arr[])
        {
                System.out.print("[");
                for (int x=0; x<arr.length; x++)
                {
                        if (x!=arr.length-1)
                                System.out.print(arr[x]+",");
                        else
                                System.out.print(arr[x]+"]");
                }
        }
       
        //查找数组中的最大值
        public static int getMax(int [] arr)
        {
                int max = arr[0];
                for (int x =0; x<arr.length; x++)
                {
                        if (arr[x]>max)
                        {
                                max = arr[x];
                        }
                }
                return max;
        }
       
        //查找数组中的最小值
        public static int getMin(int [] arr)
        {
                int min = arr[0];
                for (int x =0; x<arr.length; x++)
                {
                        //如果
                        if (arr[x]<min)
                        {
                                min = arr[x];
                        }
                }
                return min;
        }
       
        //查找某个数字在数组中的位置(折半查找)
        public static int getPosition(int arr[] ,int key)
        {
                int min = 0;
                int max = arr.length-1;
                int mid = (min+max)/2;
                //注意:折半查找必须是对有序数列进行,
                //所以先调用一个排序方法对给出的数组进行排序操作。
                selectSort(arr);
                while (arr[mid]!= key)
                {
                        if (arr[mid]>key)
                        {
                                max = mid - 1;
                        }
                        else if (arr[mid]<key)
                        {
                                min = mid + 1;
                        }
                        if (min > max)
                                return -1;
                        mid = (min+max)/2;
                }
                return mid;
        }
       
        //查找某个数字在数组中的位置
        //返回要查找的数字在数组中第一次出现的位置,如果没有就返回-1
        public static int getPosition_2(int arr[] ,int key)
        {
                for(int x=0; x<arr.length; x++)
                {
                        if(arr[x]==key)
                                return x;
                }
                return -1;
        }
}



以上就是今天分享的内容了,大家一起回忆一下吧,会记得更牢固哦~  一起加油!加油!

作者: 李一白_    时间: 2015-1-8 21:19
顶!!!!!!!!!!!!!
作者: IcedCoffee    时间: 2015-1-8 21:22
雪中送炭 明天数组 THANK YOU!!!
作者: 羽狼之翼    时间: 2015-1-8 21:43
李一白_ 发表于 2015-1-8 21:19
顶!!!!!!!!!!!!!

谢谢!黑马币对我很重要,真是雪中送炭,夏天送风扇啊。




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