开发手册 欢迎您!
软件开发者资料库

数据结构和算法 - 数组

数据结构和算法数组 - 使用c,C ++和Java学习数据结构和算法,从简单和简单的步骤开始,从基本到高级概念,包括概述,环境设置,算法,渐近分析,贪婪算法,分而治之,动态编程,数据结构,数组,链接列表,双链表,循环列表,堆栈,解析表达式,队列,优先级队列,线性,二进制,插值搜索,树,树遍历,二进制搜索树,B +,AVL,跨越,塔河内,哈希表,堆,图,深度,广度第一遍历,搜索技术,排序技术,排序算法,泡沫,合并排序算法,插入,选择,壳,快速排序,递归,斐波那契系列。

Array是一个容器,可以容纳固定数量的项目,这些项目应该是相同的类型.大多数数据结构都使用数组来实现其算法.以下是理解数组概念的重要术语.

  • 元素 : 存储在数组中的每个项目都称为元素.

  • 索引 : 数组中元素的每个位置都有一个数字索引,用于标识元素.

数组表示

可以用不同语言以各种方式声明数组.为了说明,我们采取C数组声明.

数组声明

数组可以用不同语言以各种方式声明.为了说明,我们采用C数组声明.

数组表示

As根据上图,以下是要考虑的重点.

  • 索引从0开始.

  • 数组长度为10,这意味着它可以存储10个元素.

  • 每个元素都可以通过它访问指数.例如,我们可以将索引6处的元素取为9.

基本操作

以下是数组支持的基本操作.

  • Traverse : 逐个打印所有数组元素.

  • 插入 : 在给定索引处添加元素.

  • 删除 : 删除给定索引处的元素.

  • 搜索 : 使用给定索引或值搜索元素.

  • 更新 : 更新给定索引处的元素.

在C中,当使用size初始化数组时,它会为其元素分配默认值按照以下顺序.

数据类型默认值
boolfalse
char0
int0
float0.0
double0.0f
void
wchar_t0

插入操作

插入操作是将一个或多个数据元素插入到数组中.根据需求,可以在数组的开头,结尾或任何给定索引处添加一个新元素.

这里,我们看到插入操作的实际实现,我们在其中添加数据在数组的末尾 :

算法

数组 MAX的线性无序数组元素.

示例

结果

LA 是具有 N 元素的线性阵列(无序),并且 K 是正整数,使得 K <= N .以下是将ITEM插入LA的K th 位置的算法>

  1.启动 2.设置J = N  3.设置N = N +  1  4.重复步骤5和6,而J> = K  5.设置LA [J + 1] = LA [J]  6.设置J = J-1  7.设置LA [K] = ITEM  8.停止

示例

以下是上述算法的实现 :

#include main() {   int LA[] = {1,3,5,7,8};   int item = 10, k = 3, n = 5;   int i = 0, j = n;      printf("The original array elements are :\n");   for(i = 0; i= k) {      LA[j+1] = LA[j];      j = j - 1;   }   LA[k] = item;   printf("The array elements after insertion :\n");   for(i = 0; i

当我们编译并执行上述程序时,它会产生以下结果 :

输出

The original array elements are :LA[0] = 1 LA[1] = 3 LA[2] = 5 LA[3] = 7 LA[4] = 8 The array elements after insertion :LA[0] = 1 LA[1] = 3 LA[2] = 5 LA[3] = 10 LA[4] = 7 LA[5] = 8

删除操作

删除是指从数组中删除现有元素并重新组织数组的所有元素.

算法

考虑 LA 是一个带有 N 元素和

  1.启动 2.设置J = K  3.重复步骤4和5,同时J

示例

以下是上述算法的实现 :

#include void main() {   int LA[] = {1,3,5,7,8};   int k = 3, n = 5;   int i, j;      printf("The original array elements are :\n");   for(i = 0; i

当我们编译并执行上述程序时,它会产生以下结果 :

输出

The original array elements are :LA[0] = 1 LA[1] = 3 LA[2] = 5 LA[3] = 7 LA[4] = 8 The array elements after deletion :LA[0] = 1 LA[1] = 3 LA[2] = 7 LA[3] = 8

搜索操作

您可以根据数值或索引搜索数组元素.

算法

考虑 LA 是具有 N 元素的线性阵列,并且 K 是正整数,使得 K <= N .以下是使用顺序搜索查找值为ITEM的元素的算法.

  1.启动 2.设置J = 0  3.重复步骤4和5,同时J< N  4.如果LA [J]相等,那么GOTO STEP 6  5.设置J = J +1  6.打印J,项目 7.停止

示例

以下是上述算法的实现 :

#include void main() {   int LA[] = {1,3,5,7,8};   int item = 5, n = 5;   int i = 0, j = 0;      printf("The original array elements are :\n");   for(i = 0; i

当我们编译并执行上述程序时,它会产生以下结果 :

输出

The original array elements are :LA[0] = 1 LA[1] = 3 LA[2] = 5 LA[3] = 7 LA[4] = 8 Found element 5 at position 3

更新操作

更新操作是指在给定索引处更新数组中的现有元素.

算法

考虑 LA 是一个带有 N 元素的线性数组,而 K 是一个正整数,使得 K< ; = N 的.以下是更新LA的K th 位置可用元素的算法.

  1.启动 2.设置LA [K-1] = ITEM  3.停止

示例

以下是上述算法的实现 :

#include void main() {   int LA[] = {1,3,5,7,8};   int k = 3, n = 5, item = 10;   int i, j;      printf("The original array elements are :\n");   for(i = 0; i

当我们编译并执行上述程序时,它会产生以下结果 :

输出

The original array elements are :LA[0] = 1 LA[1] = 3 LA[2] = 5 LA[3] = 7 LA[4] = 8 The array elements after updation :LA[0] = 1 LA[1] = 3 LA[2] = 10 LA[3] = 7 LA[4] = 8