数组的增删查找操作

package com.app.Problem.problem0715;
/**
 * Explain:对数组的增删查找操作
 * @author Administrator
 * 
 */
public class Problem_04 {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int[] prray = addNumber(array, 3, 6);
int[] crray = deleteNum(array, 3);
int index = searchNum(array, 9);
ptintArray(array);
ptintArray(prray);
ptintArray(crray);
System.out.println(index);


}


/**
* 向数组中添加元素
* @param array
* @param i
* @param number
* @return
*/
static int[] addNumber(int[] array, int i, int number) {
int[] prray = new int[array.length + 1];

for (int j = 0; j < prray.length; j++) {
if(j<i)
{
prray[j]=array[j];
}
if (j == i) {
prray[j] = number;
} else if(j>i){
prray[j] = array[j - 1];
}


}
return prray;


}


/**
* 删除数组中的元素
* @param array
* @param i
* @return
*/
static int[] deleteNum(int[] array, int i) {
int[] prray = new int[array.length - 1];
for (int j = 0; j < array.length; j++) {
if (j < i) {
prray[j] = array[j];
} else if (j > i) {
prray[j - 1] = array[j];


}
}
return prray;


}
/**
* 查找数组元素
* @param array
* @param number
* @return
*/


static int searchNum(int[] array, int number) {
int index = 0;
for (int i = 0; i < array.length; i++) {
if (number == array[i]) {
index = i;
}
}
return index;
}


static void ptintArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "  ");
}
System.out.println();
}
}
# 题目重述 请用 C# 实现一维数组的增、删、改、查操作,并说明其特点与限制。 --- # 详解 C# 中的数组是固定长度的引用类型数据结构,一旦创建,长度不可变。因此,“增”和“删”操作不能直接在原数组上完成,需通过创建新数组实现。以下是详细操作示例: ## 1. **查(查找)** 通过索引访问元素(索引从 0 开始): ```csharp int[] arr = {1, 2, 3, 4, 5}; Console.WriteLine(arr[2]); // 输出: 3 ``` 查找某个值的索引(使用 `Array.IndexOf`): ```csharp int index = Array.IndexOf(arr, 3); Console.WriteLine(index); // 输出: 2 ``` 判断是否存在某元素: ```csharp bool exists = Array.Exists(arr, x => x == 4); ``` ## 2. **改(修改)** 直接通过索引赋值: ```csharp arr[2] = 10; // 此时 arr 变为 {1, 2, 10, 4, 5} ``` 支持范围修改(C# 8+): ```csharp int[] sub = arr[1..4]; // 截取索引 1 到 3 的子数组 ``` ## 3. **增(插入)** 数组长度固定,需创建新数组并复制内容。 ### 在指定位置插入一个元素: ```csharp public static int[] Insert(int[] arr, int value, int index) { int n = arr.Length; int[] newArr = new int[n + 1]; Array.Copy(arr, 0, newArr, 0, index); newArr[index] = value; Array.Copy(arr, index, newArr, index + 1, n - index); return newArr; } // 使用示例: int[] result = Insert(arr, 99, 2); // 在索引 2 处插入 99 ``` ## 4. **删(删除)** 同样需创建更小数组。 ### 删除指定索引处元素: ```csharp public static int[] DeleteAt(int[] arr, int index) { int n = arr.Length; int[] newArr = new int[n - 1]; Array.Copy(arr, 0, newArr, 0, index); Array.Copy(arr, index + 1, newArr, index, n - index - 1); return newArr; } // 使用示例: int[] afterDelete = DeleteAt(result, 2); ``` ### 删除特定值(第一个匹配项): ```csharp public static int[] RemoveValue(int[] arr, int value) { int index = Array.IndexOf(arr, value); if (index == -1) return arr; // 未找到 return DeleteAt(arr, index); } ``` --- # 知识点(列出解答该问题需要的知识点) 1. **数组的静态长度特性** C# 数组一旦初始化,长度不可变,增删需创建新数组。 2. **Array.Copy 方法高效复制** 比循环赋值更快地复制数组片段,提升性能。 3. **索引与范围操作(Index/Range)** C# 8+ 支持 `^` 和 `..` 进行灵活的子数组提取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值