java中的数组的常见操作问题

数组操作常见操作

    对数组操作最基本的动作就是存和取。
    核心思想:就是对角标的操作。

    示例:遍历并打印数组元素

class ArrayDemo{
       public static void main(String[] args) {
            int[] arr = {89,34,270,17};

            for(int x = 0; x < arr.length; x += 1){
                  System.out.println("arr[" + x + "] = " + arr[x] + ";");
            }
      }
} 

常见操作一:获取最值(最大值,最小值)

    思路:
    1、需要进行比较,并定义变量记录住每次比较后较大的值。
    2、对数组中的元素进行遍历取出,和变量中记录的元素进行比较。
         如果遍历到的元素大于变量中记录的元素,就用变量该记录住大的值。
    3、遍历结果,该变量记录就是最大值。

    两个明确:
    明确一:结果。是数组中的元素:int类型。
    明确二:未知内容。数组。

    示例1:通过定义变量记录较大的值的方式实现。
class ArrayDemo{
       public static void main(String[] args) {
             int[] arr= {89,34,-270,17,3,100};
             int max = getMax(arr);
             System.out.println("max = " + max);
       }

       public static 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;
      }
}

示例2: 通过定义变量记录较大的值的索引方式实现。

class ArrayDemo{
       public static void main(String[] args) {
            int[] arr= {89,34,-270,17,3,100};
            int max = getMax(arr);
            System.out.println("max = " + max);
      }

       public static int getMax(int[] arr){
             int maxIndex = 0;
             for(int x = 1; x < arr.length; x++){
                   if(arr[x] > arr[maxIndex])
                        maxIndex = x;
            }
            return arr[maxIndex];
      }
}    


常见操作二:排序(选择排序,冒泡排序)

    选择排序

    思路:
    1、首先拿数组第一个元素依次与除其自身外的其他每个元素顺序比较,如果第一个元素大于剩下的某个元素,就互换内容。
    2、经过第一轮比较之后,此时,第一个元素就是数组中最小的元素。然后再拿第二个元素与除第一个元素和其自身的元素进行比较,如果第二个元素大于剩下的某个元素,就互换内容。此时,第二个元素就是数组中倒数第二小的元素。

    3、依次类推,直到最后一个元素。

class ArrayDemo{
       public static void main(String[] args) {
            int[] arr= {89,34,-270,17,3,100};
            System.out.print("排序前数组:" );
            printArray(arr);
            selectSort(arr);
            System.out.print("排序后数组:" );
            printArray(arr);
      }

       public static void selectSort(int[] arr){
             for(int x = 0; x < arr.length - 1; x++){
                   for(int y = x + 1; y < arr.length; y++){
                         if(arr[x] > arr[y]){
                              int temp = arr[x];
                              arr[x] = arr[y];
                              arr[y] = temp;
                        }
                  }
            }
      }
      
       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.println(arr[x] + "]" );
            }
      }
}   

  P.S.
    1、上面的selectSort方法之所以不用返回int数组的原因是因为:arr引用变量是对传入selectSort方法中作为参数的数组的引用,selectSort方法执行完毕之后,我们依然可以通过arr引用变量操作传入的数组。所以,没有必要再通过返回值获取。
    2、上面的选择排序算法效率比较低,因为数组每一个元素与剩下的元素比较就是为了获得最小的元素并且与之互换。例如:{89,34,-270,17,3,100}这个数组,第一轮就要互换4次才能使第一个元素存储的是这个数组中最小的元素。如果是这样,那么更高效率的方式则是只需要通过两个变量,一个记录最小值,一个记录最小值所在的角标即可。等当前元素与余下的所有元素比较完,直接互换,这样只需互换一次就能达到目标,效率自然就会提高。

       
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值