数据结构和算法 - 数组

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 <stdio.h>

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<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }

   n = n &plus; 1;
	
   while( j >= k) {
      LA[j&plus;1] = LA[j];
      j = j - 1;
   }

   LA[k] = item;

   printf("The array elements after insertion :\n");

   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[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<N 
4.设置LA [J] = LA [J + 1] 
 5.设置J = J +  1 
 6.设置N = N-1 
 7.停止

示例

以下是上述算法的实现 :

#include <stdio.h>

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<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   j = k;
	
   while( j < n) {
      LA[j-1] = LA[j];
      j = j &plus; 1;
   }
	
   n = n -1;
   
   printf("The array elements after deletion :\n");
	
   for(i = 0; i<n; i&plus;&plus;) {
      printf("LA[%d] = %d \n", i, LA[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 <stdio.h>

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<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   while( j < n){
      if( LA[j] == item ) {
         break;
      }
		
      j = j + 1;
   }
	
   printf("Found element %d at position %d\n", item, j+1);
}

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

输出

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 <stdio.h>

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<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   LA[k-1] = item;

   printf("The array elements after updation :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[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