day05_java数组的操作

来源:互联网 发布:淘宝樊小林捕鼠 编辑:程序博客网 时间:2024/06/05 08:39

数组的操作:

练习1:得到数组是最大值

我原来想的是使用这种方式

Int[] arr = {3,4,54,9}

For(int i = 0 ;i<arr.length;i++)

{

If(arrr[i]>arr[i+1])

{

 

}

}

其实上面这种是不正确的是会出错下标越界的,现在数组里面有4个元素,如果你取第三的一个和第四的一个比较就会出错,那么最后一个下标就会是4,总共才三个也

 

正确的解法

/*

       获取数组中的最大值。

       思路:

       1,需要进行比较。并定义变量记录住每次比较后较大的值。

       2,对数组中的元素进行遍历取出,和变量中记录的元素进行比较。

              如果遍历到的元素大于变量中记录的元素,就用变量记录住该大的值。

       3,遍历结果,该变量记录就是最大值。

 

       定义一个功能来是实现。

       明确一,结果。

                     是数组中的元素。int .

       明确二,未知内容。

                     数组.

       */

       publicstatic int getMax(int[] arr)

       {

              //定义变量记录较大的值。

              int maxElement = arr[0];//初始化为数组中的任意一个元素。

              for(int x=1; x<arr.length; x++)

              {

                     if(arr[x]>maxElement)

                            maxElement = arr[x];

              }

              return maxElement;

       }

       publicstatic int getMax_2(int[] arr)

       {

              //定义变量记录较大的值。

              int maxIndex = 0;//初始化为数组中任意一个角标。

              for(int x=1; x<arr.length; x++)

              {

                     if(arr[x]>arr[maxIndex])

                            maxIndex = x;

              }

              return arr[maxIndex];

       }

 

排序:

选择排序

基本思想就是拿一个元素去和后面的所有元素进行比较,一次选出一个元素出来


/*

       选择排序。

       */

       publicstatic void selectSort(int[] arr)

       {

              for(int x=0; x<arr.length-1; x++)

              {

                     for(inty=x+1; y<arr.length; y++)

                     {

                            if(arr[x]>arr[y])

                            {

                                   swap(arr,x,y);

                                   /*

                                   inttemp  = arr[x];

                                   arr[x]= arr[y];

                                   arr[y]= temp;

                                   */

                            }

                     }

              }

       }

冒泡排序

冒泡是相邻两个进行比较


上面这种一般面试时会考到,下面java中自带有排序的功能是Arrays.sort(arr)

 

排序位置置换代码提取

swap(arr,y,y+1);

                     /*

                     inttemp  = arr[y];

                     arr[y]= arr[y+1];

                     arr[y+1]= temp;

              */

 

public static void swap(int[] arr,int a,intb)

       {

              int temp = arr[a];

              arr[a] = arr[b];

              arr[b] = temp;

       }

 

 

排序的性能问题,现在我们排序不对进行两个交换了,而是记录住最小值的下标和值,然后最后再进行交换,相当于一次外层循环只交换一次

 

数组-常见功能-查找

/*

       数组常见功能:查找。

       */

       publicstatic int getIndex(int[] arr,int key)

       {

              for(int x=0; x<arr.length; x++)

              {

                     if(arr[x]==key)

                            return x;

              }

              return -1;

       }

数组-常见功能-折半查找)


/*

       二分查找法。

      

       */

/*

面试题:

给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,

那么个元素的存储的角标为如何获取。

{13,15,19,28,33,45,78,106};

*/

记住一点:只要是数组有序并且涉及到查找的,首先想到折半查找

 

 

其实啊,java给我们提供有一个折半查找的方法

int[] arr = {13,15,19,28,33,45,78,106};

int index1 = Arrays.binarySearch(arr,5);//如果存在返回的具体的角标位置,不存在返回的是  -插入点-1

System.out.println("index1="+index1);

 

 

上面讲的是数组的一些常用操作,现在我们把数组进行在实际开发中可能用到的,进行应用

/*

获取一个整数的16进制表现形式。

*/


在这个项目是数据一多,就先存储起来,在进行操作,

16进制的转换查看arrayTest2

 

下面讲解其他进行的转换比如10进制转换为2,8,16进制这些 ArrayText3.java

 

查找表法练习

ArrayTest4.java,就是星期几的应用



0 0
原创粉丝点击