JAVA 数组、排序 day5

来源:互联网 发布:淘宝企业店铺注册资金 编辑:程序博客网 时间:2024/05/16 14:07

1.数组:

如果遍历数组中的数据通过数组名.length 获取数组的长度,再使用for循环遍历即可

2.

Java 对内存空间的划分:五部分

1>栈区

2>堆区

3>方法区

4>本地方法区

5>寄存器

 

2.1.栈内存:栈内存主要是用来运行函数的,在函数中定义的所有变量,都会在这个内存开辟空间。

在栈内存中定义的变量,不初始化,是不能直接使用的。(即,函数必须要有初始值,才能被调用)

注意:所有的函数都必须在栈内存中运行。

2.2.  堆内存:在程序中使用new 关键字创建出来的所有东西,都会保存在堆内存中。即(堆内存中开辟的空间,不赋值,都会有默认的初始化数据

2.3.方法区:JVM(Java虚拟机)在加载class文件的时候,所有的class文件就要加载在这个内存中。

4.本地方法区:主要是保存native关键字标注的方法

5.寄存器:是给CPU使用的。


3.  数组名也能作为函数的形参. (引用传递)

§ 如果函数的形参是一个数组,那么在传递的时候,实参也必须要是一个数组.

如果函数的形参是一个数组, 那么实参数组的类型也要和形参数组的类型一致


4. 关于值传递与引用传递的区别 :

1. 数值传递称为值传递,仅仅是将数值拷贝了一份,(副本) 在函数内部修改数值对源数据不会有任何影响.

2. 引用传递,表示访问这个地址指向空间的值,直接对源数据进行操作.

5.求数组最值:

定义一个数组;将数组的最大或者最小值的初始值设为数组的第一个元素;进行循环比较,若max<arr[i],输出最大值,若min>arr[i],输出最小值

6.排序:

6.1 查表法:数组空间中的值和数组的下标一一对应。

      如:定义一个数组存放星期,根据输入的数组下标值对应星期。代码实现:可设定一个函数调用,在函数内部对输入的下标做判断。

6.2 数组转字符串输出:在主函数中定义个数组,定义一个变量用来存放函数的返回值。在函数内部实现转字符串的功能,定义一个for循环,对数组元素进行遍历,并以字符串的 形式进行输出。如果是字符串反向输出,for循环的条件应为i=arr.length;i>=0;i--

6.3 选择排序:

选择排序思路:
      i              j = i + 1
    第0轮     拿到0 与 1~最后一个元素进行比较
    第1轮     拿到1 与 2~最后一个元素进行比较
    第2轮     拿到2 与 3~最后一个元素进行比较
    第3轮     拿到3 与 4~最后一个元素进行比较
    第4轮     拿到4 与 5~最后一个元素进行比较
    ......
    第i轮     拿到i 与 i+1 ~ 最后一个元素进行比较

代码实现:定义一个数组;定义一个函数,将数组以字符串的形式输出;定义一个函数,对数组进行排序,外层循环:fo(int i=0;i<arr.length-1;i++),内层循环:for(int j=i+1;j<arr.length;j++),添加if判断两个数值的大小,如果arr[i]<arr[j],则交换位置

6.3 冒泡排序:

      基本思想:每次比较两个相邻的元素,如果它们的顺序错误,就把它们交换过来.

     对比方式:
0--1; 1--2; 2--3; 3--4;

0--1; 1--2; 2--3;

0--1; 1--2;

0--1;

代码实现:

1.  for(int i =0; i < array.length -1; i++)
2.                {
3.                      for(int j =0; j < array.length -1- i; j++)
4.                      {
5.                             if(array[j]> array[j+1])
6.                             {
7.                                    int temp = array[j];
8.                                    array[j]= array[j+1];
9.                                    array[j+1]= temp;
10.                            }
11.                     }
12.               }

7.查找元素

7.1 无序查找: 逐一遍历,进行元素的对比

      代码实现:定义一个数组,在主函数中定义变量存储函数的返回值,int result=searchKey(arr,3),查找arr数组中的元素3,函数searchKey(int[] arr,int key),在for循环中添加if判断(arr[i]==key)

7.2 折半查找

     代码实现:定义两个变量,用来表示最小和最大查找下标;

    while (min <= max)
        {
            int mid = (min + max) / / int mid = (min + max) >> 1;
            if (array[mid] > key) // 如果中间值大于key,就往左边找 (大了)
            {
                max = mid - 1;
            }
            else if (array[mid] < key) // 如果中间值小于key,就往右边找 (小了)
            {
                min = mid + 1;
            }
            else // 相等就是找到了,直接返回
            {
                return mid;
            }




原创粉丝点击