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

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 直接定位到元素


Easy Learning Java


Easy Learning Design Patterns Java Practice


Easy Learning Data Structures & Algorithms Java Practice


Java Parsing Collection XML JSON


Easy Learning JDBC + MySQL


Easy Learning Javascript


Easy Learning Design Patterns Javascript


Easy Learning Design Patterns ES6+ Javascript


Easy Learning Data Structures & Algorithms Javascript


Easy Learning Data Structures & Algorithms ES6+Javascript


Easy Learning Oracle SQL


Easy Learning JDBC + Oracle


Easy Learning Python 3


Easy Learning Data Structures & Algorithms Python 3


Easy Learning Design Patterns Python 3


Easy Learning HTML CSS


Easy Learning MySQL SQL


Easy Learning C#


Easy Learning Data Structures & Algorithms C#


Easy Learning C


Easy Learning Data Structures & Algorithms C


Easy Learning Data Structures & Algorithms C++

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