عملیات در آرایه: جستجو، درج و حذف – به زبان ساده
در این مطلب، انواع عملیات در آرایه شامل جستجو، درج و حذف در آرایه نامرتب مورد بررسی قرار گرفته است. همچنین، پیادهسازی این موارد در زبانهای برنامهنویسی گوناگون شامل ++C، «جاوا» (Java)، «پایتون» (Python)، «سیشارپ» (#C) و «پیاچپی» (PHP) انجام شده است.
عملیات در آرایه: جستجو در آرایه نامرتب
در یک آرایه نامرتب، عملیات جستجو را میتوان با پیمایش خطی از اولین تا آخرین عنصر انجام داد.
مثال زیر در این راستا قابل توجه است.
جستجو در آرایه نامرتب در ++C
1// C++ program to implement linear
2// search in unsorted array
3#include<bits/stdc++.h>
4using namespace std;
5
6// Function to implement search operation
7int findElement(int arr[], int n,
8 int key)
9{
10 int i;
11 for (i = 0; i < n; i++)
12 if (arr[i] == key)
13 return i;
14
15 return -1;
16}
17
18// Driver Code
19int main()
20{
21 int arr[] = {12, 34, 10, 6, 40};
22 int n = sizeof(arr) / sizeof(arr[0]);
23
24 // Using a last element as search element
25 int key = 40;
26 int position = findElement(arr, n, key);
27
28 if (position == - 1)
29 cout << "Element not found";
30 else
31 cout << "Element Found at Position: "
32 << position + 1;
33
34 return 0;
35}
36
37// This code is contributed
38// by Akanksha Rai
جستجو در آرایه نامرتب در C
1// C program to implement linear
2// search in unsorted array
3#include<stdio.h>
4
5// Function to implement search operation
6int findElement(int arr[], int n,
7 int key)
8{
9 int i;
10 for (i = 0; i < n; i++)
11 if (arr[i] == key)
12 return i;
13
14 return -1;
15}
16
17// Driver Code
18int main()
19{
20 int arr[] = {12, 34, 10, 6, 40};
21 int n = sizeof(arr) / sizeof(arr[0]);
22
23 // Using a last element as search element
24 int key = 40;
25 int position = findElement(arr, n, key);
26
27 if (position == - 1)
28 printf("Element not found");
29 else
30 printf("Element Found at Position: %d", position + 1 );
31
32 return 0;
33}
جستجو در آرایه نامرتب در جاوا
1// Java program to implement linear
2// search in unsorted arrays
3
4class Main
5{
6 // Function to implement
7 // search operation
8 static int findElement(int arr[], int n,
9 int key)
10 {
11 for (int i = 0; i < n; i++)
12 if (arr[i] == key)
13 return i;
14
15 return -1;
16 }
17
18 // Driver Code
19 public static void main(String args[])
20 {
21 int arr[] = {12, 34, 10, 6, 40};
22 int n = arr.length;
23
24 // Using a last element as search element
25 int key = 40;
26 int position = findElement(arr, n, key);
27
28 if (position == - 1)
29 System.out.println("Element not found");
30 else
31 System.out.println("Element Found at Position: "
32 + (position + 1));
33 }
34}
جستجو در آرایه نامرتب در پایتون
1# Python program for searching in
2# unsorted array
3
4def findElement(arr, n, key):
5 for i in range (n):
6 if (arr[i] == key):
7 return i
8 return -1
9
10arr = [12, 34, 10, 6, 40]
11key = 40
12n = len(arr)
13
14#search operation
15index = findElement(arr, n, key)
16if index != -1:
17 print ("element found at position: " + str(index + 1 ))
18else:
19 print ("element not found")
20
21# Thanks to Aditi Sharma for contributing
22# this code
جستجو در آرایه نامرتب در #C
1// C# program to implement linear
2// search in unsorted arrays
3using System;
4
5class main
6{
7 // Function to implement
8 // search operation
9 static int findElement(int []arr, int n,
10 int key)
11 {
12 for (int i = 0; i < n; i++)
13 if (arr[i] == key)
14 return i;
15
16 return -1;
17 }
18
19 // Driver Code
20 public static void Main()
21 {
22 int []arr = {12, 34, 10, 6, 40};
23 int n = arr.Length;
24
25 // Using a last element as
26 // search element
27 int key =40;
28 int position = findElement(arr,n,key);
29
30 if (position == - 1)
31 Console.WriteLine("Element not found");
32 else
33 Console.WriteLine("Element Found at Position: "
34 + (position+1));
35 }
36}
37
38// This code is contributed by vt_m.
جستجو در آرایه نامرتب در PHP
1<?php
2// PHP program to implement linear
3// search in unsorted array
4
5// Function to implement
6// search operation
7function findElement($arr, $n, $key)
8{
9 $i;
10 for ($i = 0; $i < $n; $i++)
11 if ($arr[$i] == $key)
12 return $i;
13
14 return -1;
15}
16
17// Driver Code
18$arr = array(12, 34, 10, 6, 40);
19$n = sizeof($arr);
20
21// Using a last element
22// as search element
23$key = 40;
24$position = findElement($arr, $n, $key);
25
26if ($position == - 1)
27 echo("Element not found");
28else
29 echo("Element Found at Position: " . ($position + 1));
30
31// This code is contributed by Ajit.
32?>
خروجی قطعه کدهای بالا به صورت زیر است:
Element Found at Position: 5
پیچیدگی زمانی جستجو در آرایه نامرتب با استفاده از روشی که پیادهسازی آن در بالا انجام شده، از درجه (O(n است.
عملیات در آرایه: درج در آرایه نامرتب
در یک آرایه نامرتب، عملیات درج (Insert) در مقایسه با یک آرایه مرتب، سریعتر انجام میشود؛
زیرا نیازی به بررسی موقعیتی که عنصر باید در آن قرار بگیرد نیست.
درج در آرایه نامرتب در C
1// C program to implement insert
2// operation in an unsorted array.
3#include<stdio.h>
4
5// Inserts a key in arr[] of given capacity.
6// n is current size of arr[]. This
7// function returns n + 1 if insertion
8// is successful, else n.
9int insertSorted(int arr[], int n,
10 int key,
11 int capacity)
12{
13
14 // Cannot insert more elements if n is
15 // already more than or equal to capcity
16 if (n >= capacity)
17 return n;
18
19 arr[n] = key;
20
21 return (n + 1);
22}
23
24// Driver Code
25int main()
26{
27 int arr[20] = {12, 16, 20, 40, 50, 70};
28 int capacity = sizeof(arr) / sizeof(arr[0]);
29 int n = 6;
30 int i, key = 26;
31
32 printf("\n Before Insertion: ");
33 for (i = 0; i < n; i++)
34 printf("%d ", arr[i]);
35
36 // Inserting key
37 n = insertSorted(arr, n, key, capacity);
38
39 printf("\n After Insertion: ");
40 for (i = 0; i < n; i++)
41 printf("%d ",arr[i]);
42
43 return 0;
44}
درج در آرایه نامرتب در جاوا
1// Java program to implement insert
2// operation in an unsorted array.
3
4class Main
5{
6 // Function to insert a given key in
7 // the array. This function returns n+1
8 // if insertion is successful, else n.
9 static int insertSorted(int arr[], int n,
10 int key,
11 int capacity)
12 {
13
14 // Cannot insert more elements if n
15 // is already more than or equal to
16 // capcity
17 if (n >= capacity)
18 return n;
19
20 arr[n] = key;
21
22 return (n + 1);
23 }
24
25 // Driver Code
26 public static void main (String[] args)
27 {
28 int[] arr = new int[20];
29 arr[0] = 12;
30 arr[1] = 16;
31 arr[2] = 20;
32 arr[3] = 40;
33 arr[4] = 50;
34 arr[5] = 70;
35 int capacity = 20;
36 int n = 6;
37 int i, key = 26;
38
39 System.out.print("Before Insertion: ");
40 for (i = 0; i < n; i++)
41 System.out.print(arr[i]+" ");
42
43 // Inserting key
44 n = insertSorted(arr, n, key, capacity);
45
46 System.out.print("\n After Insertion: ");
47 for (i = 0; i < n; i++)
48 System.out.print(arr[i]+" ");
49 }
50}
درج در آرایه نامرتب در پایتون
1# Python program for inserting
2# an element in an unsorted array
3
4# method to insert element
5def insert(arr, element):
6 arr.append(element)
7
8# declaring array and key to insert
9arr = [12, 16, 20, 40, 50, 70]
10key = 26
11
12# array before inserting an element
13print ("Before Inserting: ")
14print (arr)
15
16# array after Inserting element
17insert(arr, key)
18print("After Inserting: ")
19print (arr)
20
21# Thanks to Aditi Sharma for contributing
22# this code
درج در آرایه نامرتب در #C
1// C# program to implement insert
2// operation in an unsorted array.
3using System;
4
5class main
6{
7
8 // Function to insert a given
9 // key in the array. This
10 // function returns n + 1
11 // if insertion is successful,
12 // else n.
13 static int insertSorted(int []arr, int n,
14 int key,
15 int capacity)
16 {
17
18 // Cannot insert more elements
19 // if n is already more than
20 // or equal to capcity
21 if (n >= capacity)
22 return n;
23
24 arr[n] = key;
25 return (n + 1);
26 }
27
28 // Driver Code
29 public static void Main ()
30 {
31 int[] arr = new int[20];
32 arr[0] = 12;
33 arr[1] = 16;
34 arr[2] = 20;
35 arr[3] = 40;
36 arr[4] = 50;
37 arr[5] = 70;
38 int capacity = 20;
39 int n = 6;
40 int i, key = 26;
41
42 Console.Write("Before Insertion: ");
43 for (i = 0; i < n; i++)
44 Console.Write(arr[i]+" ");
45 Console.WriteLine();
46
47 // Inserting key
48 n = insertSorted(arr, n, key, capacity);
49
50 Console.Write("After Insertion: ");
51 for (i = 0; i < n; i++)
52 Console.Write(arr[i]+" ");
53
54 }
55}
56
57// This code is contributed by vt_m.
درج در آرایه نامرتب در PHP
1<?php
2// PHP program to implement insert
3// operation in an unsorted array.
4
5// Inserts a key in arr[] of given
6// capacity. n is current size of arr[].
7// This function returns n + 1 if
8// insertion is successful, else n.
9function insertSorted(&$arr, $n, $key,
10 $capacity)
11{
12
13 // Cannot insert more elements if n is
14 // already more than or equal to capcity
15 if ($n >= $capacity)
16 return $n;
17
18 array_push($arr, $key);
19
20 return ($n + 1);
21}
22
23// Driver Code
24
25$arr = array(12, 16, 20, 40, 50, 70);
26$capacity = 20;
27$n = 6;
28$key = 26;
29
30echo "Before Insertion: ";
31for ($i = 0; $i < $n; $i++)
32 echo $arr[$i] . " ";
33
34// Inserting key
35$n = insertSorted($arr, $n,
36 $key, $capacity);
37
38echo "\nAfter Insertion: ";
39for ($i = 0; $i < $n; $i++)
40 echo $arr[$i] . " ";
41
42// This code is contributed by
43// Rajput-Ji
44?>
خروجی قطعه کدهای بالا به صورت زیر است.
Before Insertion: 12 16 20 40 50 70 After Insertion: 12 16 20 40 50 70 26
پیچیدگی زمانی درج در آرایه نامرتب با استفاده از روشی که پیادهسازی آن در بالا انجام شده، از درجه (O(1 است.
عملیات در آرایه: حذف از آرایه نامرتب
در عملیات حذف، عنصری که باید حذف شود با استفاده از «جستجوی خطی» (Linear Search) مورد جستجو قرار میگیرد.
سپس، عملیات حذف با شیفت دادن عناصر انجام میشود.
حذف از آرایه نامرتب در C
1// C program to implement delete operation in a
2// unsorted array
3#include<stdio.h>
4
5// To search a key to be deleted
6int findElement(int arr[], int n,
7 int key);
8
9// Function to delete an element
10int deleteElement(int arr[], int n,
11 int key)
12{
13 // Find position of element to be deleted
14 int pos = findElement(arr, n, key);
15
16 if (pos == - 1)
17 {
18 printf("Element not found");
19 return n;
20 }
21
22 // Deleting element
23 int i;
24 for (i = pos; i < n - 1; i++)
25 arr[i] = arr[i + 1];
26
27 return n - 1;
28}
29
30// Function to implement search operation
31int findElement(int arr[], int n, int key)
32{
33 int i;
34 for (i = 0; i < n; i++)
35 if (arr[i] == key)
36 return i;
37
38 return - 1;
39}
40
41// Driver code
42int main()
43{
44 int i;
45 int arr[] = {10, 50, 30, 40, 20};
46
47 int n = sizeof(arr) / sizeof(arr[0]);
48 int key = 30;
49
50 printf("Array before deletion\n");
51 for (i = 0; i < n; i++)
52 printf("%d ", arr[i]);
53
54 n = deleteElement(arr, n, key);
55
56 printf("\nArray after deletion\n");
57 for (i = 0; i < n; i++)
58 printf("%d ", arr[i]);
59
60 return 0;
61}
حذف از آرایه نامرتب در جاوا
1// Java program to implement delete
2// operation in an unsorted array
3
4class Main
5{
6 // function to search a key to
7 // be deleted
8 static int findElement(int arr[], int n, int key)
9 {
10 int i;
11 for (i = 0; i < n; i++)
12 if (arr[i] == key)
13 return i;
14
15 return -1;
16 }
17
18 // Function to delete an element
19 static int deleteElement(int arr[], int n, int key)
20 {
21 // Find position of element to be
22 // deleted
23 int pos = findElement(arr, n, key);
24
25 if (pos == -1)
26 {
27 System.out.println("Element not found");
28 return n;
29 }
30
31 // Deleting element
32 int i;
33 for (i = pos; i< n - 1; i++)
34 arr[i] = arr[i + 1];
35
36 return n - 1;
37 }
38
39 // Driver Code
40 public static void main(String args[])
41 {
42 int i;
43 int arr[] = {10, 50, 30, 40, 20};
44
45 int n = arr.length;
46 int key = 30;
47
48 System.out.println("Array before deletion");
49 for (i=0; i<n; i++)
50 System.out.print(arr[i] + " ");
51
52 n = deleteElement(arr, n, key);
53
54 System.out.println("\n\nArray after deletion");
55 for (i=0; i<n; i++)
56 System.out.print(arr[i]+" ");
57 }
58}
حذف از آرایه نامرتب در پایتون
1# Python program to delete an element
2# from an unsorted array
3
4# Declaring array and key to delete
5arr = [10, 50, 30, 40, 20]
6key = 30
7
8print("Array before deletion:")
9print arr
10
11# deletes key if found in the array
12# otherwise shows error not in list
13arr.remove(key)
14print("Array after deletion")
15print(arr)
16
17# This code is contributed by Aditi Sharma.
حذف از آرایه نامرتب در #C
1// C# program to implement delete
2// operation in an unsorted array
3using System;
4
5class main
6{
7 // Function to search a
8 // key to be deleted
9 static int findElement(int []arr,
10 int n,
11 int key)
12 {
13
14 int i;
15 for (i = 0; i < n; i++)
16 if (arr[i] == key)
17 return i;
18
19 return -1;
20 }
21
22 // Function to delete an element
23 static int deleteElement(int []arr,
24 int n,
25 int key)
26 {
27 // Find position of element
28 // to be deleted
29 int pos = findElement(arr, n, key);
30
31 if (pos == - 1)
32 {
33 Console.WriteLine("Element not found");
34 return n;
35 }
36
37 // Deleting element
38 int i;
39 for (i = pos; i < n - 1; i++)
40 arr[i] = arr[i + 1];
41
42 return n - 1;
43 }
44
45 // Driver Code
46 public static void Main()
47 {
48 int i;
49 int []arr = {10, 50, 30, 40, 20};
50
51 int n = arr.Length;
52 int key = 30;
53
54 Console.Write("Array before deletion ");
55 for (i = 0; i < n; i++)
56 Console.Write(arr[i] + " ");
57 Console.WriteLine();
58
59 n = deleteElement(arr, n, key);
60
61 Console.Write("Array after deletion ");
62 for (i = 0; i < n; i++)
63 Console.Write(arr[i]+" ");
64 }
65}
66
67// This code is contributed by vt_m.
حذف از آرایه نامرتب در PHP
1<?php
2// PHP program to implement delete
3// operation in an unsorted array
4
5// To search a key to be deleted
6function findElement(&$arr, $n, $key)
7{
8 for ($i = 0; $i < $n; $i++)
9 if ($arr[$i] == $key)
10 return $i;
11
12 return -1;
13}
14
15// Function to delete an element
16function deleteElement(&$arr, $n, $key)
17{
18 // Find position of element to
19 // be deleted
20 $pos = findElement($arr, $n, $key);
21
22 if ($pos == -1)
23 {
24 echo "Element not found";
25 return $n;
26 }
27
28 // Deleting element
29 for ($i = $pos; $i < $n - 1; $i++)
30 $arr[$i] = $arr[$i + 1];
31
32 return $n - 1;
33}
34
35// Driver code
36$arr = array(10, 50, 30, 40, 20);
37
38$n = count($arr);
39$key = 30;
40
41echo "Array before deletion\n";
42for ($i = 0; $i < $n; $i++)
43echo $arr[$i] . " ";
44
45$n = deleteElement($arr, $n, $key);
46
47echo "\nArray after deletion\n";
48for ($i = 0; $i < $n; $i++)
49echo $arr[$i] . " ";
50
51// This code is contributed by
52// Rajput-Ji
53?>
خروجی قطعه کدهای بالا، به صورت زیر است.
Array before deletion 10 50 30 40 20 Array after deletion 10 50 40 20
پیچیدگی زمانی حذف از آرایه نامرتب با استفاده از روشی که پیادهسازی آن در بالا انجام شده از درجه (O(n است.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی C++
- مجموعه آموزشهای ریاضیات
- کد جمع کردن چند جملهایها — راهنمای کاربردی
- برنامه ضرب چند جملهایها — راهنمای کاربردی
^^
بابا دمتون گرم چقد جامع بود