数据结构算法 之 线性表(一维数组) 添加,插入,修改,删除

1.线性表(一维数组)  添加

/**
向一维数组scores末尾中添加一个学生的成绩 75.
思路:
1. 先创建一个比原来scores数组长度大1的临时数组 tempArray
2. 将scores数组的每一个值复制到 tempArray
3. 然后将 成绩为 75 赋值到 tempArray的新增最后的索引位置
4. 最后将tempArray地址指针引用赋值给 scores;
*/

图解分析:



代码实现:

package com.data.structure.array;

public class TestArrayadd {

	public static void main(String[] args) {
		int[] scores = { 90, 70, 50, 80, 60, 85 };

		scores = add(scores, 75);

		// 打印输出成绩
		for (int i = 0; i < scores.length; i++) {
			System.out.print(scores[i] + ",");
		}

	}

	public static int[] add(int[] array, int score) {
		int[] tempArray = new int[array.length + 1];
		for (int i = 0; i < array.length; i++) {
			tempArray[i] = array[i];
		}
		tempArray[array.length] = score;

		return tempArray;
	}

}


结果:
90,70,50,80,60,85,75,

2.一维数组 插入

/**
向一维数组scores任意位置 插入一个学生的成绩 75.
思路:
1. 先创建一个比原来scores数组长度大1的临时数组 tempArray
2. 将scores数组从开始到插入位置的前一个元素的每一个值复制到 tempArray
3. 将scores数组从插入位置到最后的元素的每一个值往后移动一个复制到 tempArray
3. 然后将 成绩为 75 赋值到 tempArray的要插入的索引位置
4. 最后将tempArray地址指针引用赋值给 scores;
*/

图解分析:



代码实现:

package com.data.structure.array;

public class TestArrayInsert {

	public static void main(String[] args) {
		int[] scores = { 90, 70, 50, 80, 60, 85 };

		scores = insert(scores, 75,2);//将 75 插入到索引为 2 的位置

		// 打印输出成绩
		for (int i = 0; i < scores.length; i++) {
			System.out.print(scores[i] + ",");
		}

	}

	public static int[] insert(int[] array, int score,int insertIndex) {
		
		int[] tempArray = new int[array.length + 1];
		for (int i = 0; i < array.length; i++) {
			if(i<insertIndex)
			{
				tempArray[i] = array[i];
			}
			else
			{
				tempArray[i+1] = array[i];
			}
		}
		tempArray[insertIndex] = score;

		return tempArray;
	}

}


结果:
90,70,75,50,80,60,85,

3.一维数组 修改

/**
向一维数组scores任意位置修改一个学生的成绩 75.
*/

图解分析:



代码实现:

package com.data.structure.array;

public class TestArrayUpdate {

	public static void main(String[] args) {
		int[] scores = { 90, 70, 50, 80, 60, 85 };

		scores = update(scores, 75,2);//将 75替换到索引为 2 的位置

		// 打印输出成绩
		for (int i = 0; i < scores.length; i++) {
			System.out.print(scores[i] + ",");
		}

	}

	public static int[] update(int[] array, int score,int replaceIndex) {
		
		array[replaceIndex] = score;

		return array;
	}

}


结果:
90,70,75,80,60,85,

4.一维数组 删除

/**
一维数组scores任意位置 删除一个学生的成绩
思路:
1. 创建一个临时比scores 小1的临时数组tempArray
2. 将删除位置前面的数据复制到tempArray前面
3. 将删除位置后面的数组依次复制到 tempArray 后面
4. 将tempArray地址指针引用赋值给 scores
5. 打印输出scores
*/

图解分析:



代码实现:

package com.data.structure.array;

public class TestArrayDelete {

	public static void main(String[] args) {
		int[] scores = { 90, 70, 50, 80, 60, 85 };

		scores = delete(scores, 2);//删除索引为 2 的成绩

		// 打印输出成绩
		for (int i = 0; i < scores.length; i++) {
			System.out.print(scores[i] + ",");
		}

	}

	public static int[] delete(int[] array,int deleteIndex) {
		
		int[] tempArray = new int[array.length - 1];
		for (int i = 0; i < array.length; i++) {
			if(i<=deleteIndex)
			{
				tempArray[i] = array[i];
			}
			else
			{
				tempArray[i-1] = array[i];
			}
		}

		return tempArray;
	}

}


结果:
90,70,80,60,85,

总结 : 一维数组 添加,插入,删除 都需要额外创建临时数组,然后移动数据,开销比较大。
        但是查找很快,通过下标号 i 直接定位到元素


至简 Java


设计模式 Java 实战


剖析 Java 并发编程


Java 深入浅出 数据结构算法


Java NIO 精髓实战


至简 SQL Oracle


透析 JDBC


至简 Java Web 案例驱动


至简框架 Java


Java 集群架构实战


至简 HTML CSS JavaScript


集合 XML JSON 解析互换原理


至简 Python


Python 设计模式


Python 深入浅出 数据结构算法

数据结构算法 之 线性表(一维数组) 添加,插入,修改,删除