数组(相关知识的整理)

数组

- 什么是数组?
- 数组的概念
- 数组有什么特点
- 怎么用
- 相关的算法

 数组的概念


- 数组是一个变量,存储相同数据类型的一组数据。
- 作用: 告诉计算机数据类型是什么?
- 格式: 数据类型 数组 名[ ] ;
数据类型[ ] 数组名 ;
- 注意: 声明数组时不规定数组长度。

数组的特点

特点

:- 数据类型相同
- 数组名实际就是一个变量,既然是变量就必须先赋值再使用
- 数组的每一个元素既可以是基本数据类型也可以是引用数据类型

 创建数组

- 声明一个变量会在内存中划出一块合适的空间。
- 数组需要在内存中划出一串连续的空间。
- 格式:数据类型[ ] 数组名 ;
数组名 = new 数据类型[大小] ;

eg:
  int[] score;
  score = new int[5];

 初始化

 静态初始化

- 初始化的同时为每个元素赋值,不需要指明长度
int[] scores = {100,70,98,67}; //创建数组对象并初始化,存放4个成绩

动态初始化

- 初始化时由系统分配初始值,需要指明数组长度
int[] scores = new int[10];//创建数组对象,存放10个int数据,默认0

赋值


- 数组创建完毕后可以通过下标对每个元素进行赋值
- 下标从0开始
- 数组长度 length,下标最大 length-1

 注意事项


- 标识符:数组的名称,用于区分不同的数组。
- 数组元素:向数组中存放的数据。
- 元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问。
- 元素类型:数组元素的数据类型。

 快速初始化


- 边声明边赋值:
int[] score = {78,15,20,62};
int[] num = new int[] {89,90,74,62};

 相关算法


 冒泡排序


- 升序排序(从小到大)
1、 比较相邻的元素,如果第一个比第二个大,交换两个元素。
2、 从第一个元素开始重复①的工作,两两比较直到第一轮结束,此时最右边一个数最大。
3、 对序列中的前 n-1 个元素重复 ①② 的工作,此时右边2个数是最大且已排序。
4 、每一轮都会减少一个数字在比较序列中,共比较 n-1 轮。

 1 public static void main(String[] args) {
 2         int[] arr = { 44, 77, 88, 99, 100, 22 };
 3         arrSort(arr);
 4 }
 5 public static void arrSort(int[] a) {
 6         for (int i = 0; i < a.length; i++) {
 7             for (int j = 0; j < a.length - 1; j++) {
 8                 if (a[j] < a[j + 1]) {
 9                     int temp = 0;
10                     temp = a[j];
11                     a[j] = a[j + 1];
12                     a[j + 1] = temp;
13                 }
14             }
15         }
16         System.out.println(Arrays.toString(a));
17     }

 选择排序法


1、在待排序的序列中选出最小的元素,将它与第一个元素交换,待排序元素排除第一个元素;
2、在待排序的序列中选出最小的元素,将它与第二个元素交换,待排序元素排除第二个元素;
3、以此类推,直到待排序的序列中只剩下一个元素;

public static void arrSortp(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = i + 1; j < a.length; j++) {
                int temp = 0;
                if (a[i] > a[j]) {
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }

 二分法

- 当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。
- 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,
 1、如果当前位置arr[k]值等于key,则查找成功;
 2、若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];
 3、若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high],
 4、直到找到为止。

 1 /**
 2  * 二分法
 3  * @author Fzxey
 4  *
 5  */
 6 
 7 public class Test415_11 {
 8     public static void main(String[] args) {
 9         int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
10         System.out.println(arrSort(arr, 2));
11     }
12 
13     public static int arrSort(int[] a, int num) {
14         int min = 0;
15         int max = a.length-1;
16         int mid =0;
17         while (a[mid] != num) {
18              mid = (min + max)/2;
19             if (a[mid] > num) {
20                 max = mid - 1;
21             } else if (a[mid] < num) {
22                 min = mid + 1; 
23             }
24             if (min > max) {
25                 return -1;
26             }
27         }
28         return mid;
29     }
30 }

以上是几种简单,常见算法。

猜你喜欢

转载自www.cnblogs.com/fzxey/p/10726108.html