عملیات در آرایه: جستجو، درج و حذف — به زبان ساده

۲۸۸۶ بازدید
آخرین به‌روزرسانی: ۱۹ شهریور ۱۴۰۲
زمان مطالعه: ۹ دقیقه
عملیات در آرایه: جستجو، درج و حذف — به زبان ساده

در این مطلب، انواع عملیات در آرایه شامل جستجو، درج و حذف در آرایه نامرتب مورد بررسی قرار گرفته است. همچنین، پیاده‌سازی این موارد در زبان‌های برنامه‌نویسی گوناگون شامل ++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 است.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۶ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
GeeksforGeeks
۱ دیدگاه برای «عملیات در آرایه: جستجو، درج و حذف — به زبان ساده»

بابا دمتون گرم چقد جامع بود

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *