zoukankan      html  css  js  c++  java
  • 数组(相关知识的整理)

    数组

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

     数组的概念


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

    数组的特点

    特点

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

     创建数组

    - 声明一个变量会在内存中划出一块合适的空间。
    - 数组需要在内存中划出一串连续的空间。
    - 格式:数据类型[ ] 数组名 ;
    数组名 = 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 }

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

  • 相关阅读:
    TXSQL:云计算时代数据库核弹头——云+未来峰会开发者专场回顾
    游戏场景下的DDoS风险分析及防护
    一站式机器学习平台TI-ONE是什么?——云+未来峰会开发者专场回顾
    带有Apache Spark的Lambda架构
    攻克数据库核心技术壁垒,实现百万级QPS的高吞吐
    想学大数据?大数据处理的开源框架推荐
    可怕!数据库竟然打破安迪-比尔定律
    什么?云数据库也能C位出道?
    协同过滤的R语言实现及改进
    Android代码规范----按钮单击事件的四种写法
  • 原文地址:https://www.cnblogs.com/fzxey/p/10726108.html
Copyright © 2011-2022 走看看