CodeCrafters
3. حذف در آرایه¹: ما میتوانیم یک عنصر را در هر ایندکسی در یک آرایه حذف کنیم. در زیر اجرای حذف عنصر در یک آرایه آمده است: // To search a key to be deleted int findElement(int arr[], int n, int key); // Function to delete an element int deleteElement(int arr[]…
// function to search a key to
// be deleted
static int findElement(int arr[], int n, int key)
{
int i;
for (i = 0; i < n; i++)
if (arr[i] == key)
return i;
// Return -1 if key is not found
return -1;
}
// Function to delete an element
static int deleteElement(int arr[], int n, int key)
{
// Find position of element to be
// deleted
int pos = findElement(arr, n, key);
if (pos == -1) {
System.out.println("Element not found");
return n;
}
// Deleting element
int i;
for (i = pos; i < n - 1; i++)
arr[i] = arr[i + 1];
return n - 1;
}
// function to search a key to be deleted
function findElement(arr,n,key)
{
let i;
for (i = 0; i < n; i++)
if (arr[i] == key)
return i;
return -1;
}
// Function to delete an element
function deleteElement(arr,n,key)
{
// Find position of element to be deleted
let pos = findElement(arr, n, key);
if (pos == -1)
{
document.write("Element not found");
return n;
}
// Deleting element
let i;
for (i = pos; i< n - 1; i++)
arr[i] = arr[i + 1];
return n - 1;
}
#data_structures
#algorithm
@code_crafters
🔥5👍2👏1
4. جستجو در آرایه¹:
ما میتوانیم روی یک آرایه پیمایش کنیم و یک عنصر را جستجو کنیم یا به عبارتی یافتن ایندکس یک عنصر در یک آرایه. در زیر اجرای حذف عنصر در یک آرایه آمده است:
پانوشت:
1. Searching in Array
#data_structures
#algorithm
@code_crafters
ما میتوانیم روی یک آرایه پیمایش کنیم و یک عنصر را جستجو کنیم یا به عبارتی یافتن ایندکس یک عنصر در یک آرایه. در زیر اجرای حذف عنصر در یک آرایه آمده است:
// Function to implement search operation
int findElement(int arr[], int n, int key)
{
int i;
for (i = 0; i < n; i++)
if (arr[i] == key)
return i;
// If the key is not found
return -1;
}
// Function to implement search operation
int findElement(int arr[], int n, int key)
{
int i;
for (i = 0; i < n; i++)
if (arr[i] == key)
return i;
// If the key is not found
return -1;
}
// Function to implement search operation
int findElement(int arr[], int n, int key)
{
for (int i = 0; i < n; i++)
if (arr[i] == key)
return i;
// If the key is not found
return -1;
}
# Python program for searching in
# unsorted array
def findElement(arr, n, key):
for i in range(n):
if (arr[i] == key):
return i
# If the key is not found
return -1
// Function to implement
// search operation
int findElement(int[] arr, int n, int key)
{
for (int i = 0; i < n; i++)
if (arr[i] == key)
return i;
// If the key is not found
return -1;
}
// Function to implement search operation
function findElement( arr, n, key)
{
let i;
for (i = 0; i < n; i++)
if (arr[i] == key)
return i;
return -1;
}
پانوشت:
1. Searching in Array
#data_structures
#algorithm
@code_crafters
❤9👍2👏1
CodeCrafters
4. جستجو در آرایه¹: ما میتوانیم روی یک آرایه پیمایش کنیم و یک عنصر را جستجو کنیم یا به عبارتی یافتن ایندکس یک عنصر در یک آرایه. در زیر اجرای حذف عنصر در یک آرایه آمده است: // Function to implement search operation int findElement(int arr[], int n, int key)…
تحلیل پیچیدگی عملیاتها بر روی آرایه
پیچیدگی زمانی¹:
عملیات پیمایش درج حذف جستجو
بهترین حالت Ω(1) Ω(1) Ω(1) Ω(N)
حالت میانگین θ(N) θ(N) θ(N) θ(N)
بدترین حالت O(N) O(N) O(N) O(N)
پیچیدگی فضایی²:
عملیات پیمایش درج حذف جستجو
بهترین حالت Ω(1) Ω(1) Ω(1) Ω(1)
حالت میانگین θ(1) θ(N) θ(N) θ(1)
بدترین حالت O(1) O(N) O(N) O(1)
پانوشت:
1. Time Complexity
2. Space Complexity
#data_structures
#algorithm
@code_crafters
پیچیدگی زمانی¹:
عملیات پیمایش درج حذف جستجو
بهترین حالت Ω(1) Ω(1) Ω(1) Ω(N)
حالت میانگین θ(N) θ(N) θ(N) θ(N)
بدترین حالت O(N) O(N) O(N) O(N)
پیچیدگی فضایی²:
عملیات پیمایش درج حذف جستجو
بهترین حالت Ω(1) Ω(1) Ω(1) Ω(1)
حالت میانگین θ(1) θ(N) θ(N) θ(1)
بدترین حالت O(1) O(N) O(N) O(1)
پانوشت:
1. Time Complexity
2. Space Complexity
#data_structures
#algorithm
@code_crafters
❤6👍1👏1
نیاز به ساختمانهای داده آرایه
آرایهها یک ساختمان داده اساسی در علوم کامپیوتر هستند. آنها در طیف گستردهای از برنامههای کاربردی استفاده میشوند، از جمله:
- ذخیرهسازی دادهها برای پردازش
- پیادهسازی ساختمانهای داده مانند استکها و صف¹ها
- نمایش دادهها در جداول و ماتریس²ها
- ایجاد ساختمانهای داده پویا³ مانند لیستهای پیوندی⁴ و درخت⁵ها
مزایای آرایه
- آرایهها اجازه دسترسی تصادفی به عناصر را میدهند. این باعث میشود دسترسی به عناصر بر اساس موقعیت سریعتر شود.
- آرایهها محل ذخیره حافظهپنهان(کَش)⁶ بهتری دارند که تفاوت نسبتاً بزرگی در عملکرد ایجاد میکند.
- آرایهها چندین مورد داده از یک نوع را با استفاده از یک نام واحد نشان میدهند.
- آرایهها برای پیادهسازی سایر ساختمانهای داده مانند لیستهای پیوندی، استکها، صفها، درختها، نمودارها⁷ و غیره استفاده میشوند.
معایب آرایه
- از آنجایی که آرایهها اندازه ثابتی دارند، هنگامی که حافظه به آنها تخصیص یابد، نمیتوان آن را کاهش یا افزایش داد و در صورت لزوم ذخیره دادههای اضافی غیرممکن میشود. آرایهای با اندازه ثابت آرایه ایستا نامیده میشود.
- تخصیص حافظه کمتر از مقدار مورد نیاز به یک آرایه منجر به از دست رفتن دادهها میشود.
- یک آرایه در طبیعت یکدست است، بنابراین، یک آرایه واحد نمیتواند مقادیر انواع دادههای مختلف را ذخیره کند.
- آرایهها دادهها را در مکانهای حافظه پیوسته ذخیره میکنند که پیادهسازی حذف و درج را بسیار دشوار میکند. این مشکل با پیادهسازی لیستهای پیوندی برطرف میشود که امکان دسترسی متوالی به عناصر را فراهم میکند.
برنامههای کاربردی آرایه
آرایهها در برنامههای کاربردی مختلفی استفاده میشوند، از جمله:
- ذخیرهسازی دادهها برای پردازش
- آنها در پیادهسازی سایر ساختمانهای داده مانند لیستهای آرایه⁸، استکها و صفها، هرمها⁹، جداول درهمسازی یا چکیدهسازی(جداول هَش)¹⁰، بُردارها(وِکتور)¹¹ و ماتریسها استفاده میشوند.
- نمایش دادهها در جداول و ماتریسها
- ایجاد ساختمانهای داده پویا مانند لیستهای پیوندی و درختها
- سوابق¹² پایگاه داده معمولاً به صورت آرایه پیادهسازی میشوند.
- در جداول جستجو¹³ توسط کامپیوتر استفاده میشود.
نتیجه
پس از بحث، به این نتیجه رسیدیم که آرایهها روشی ساده برای دسترسی به عناصری از یک نوع با گروهبندی آنها هستند و میتوانیم عناصر را به طور موثر با ایندکسهای آنها پیدا کنیم و میتوانیم با استفاده از آنها عملیات مختلفی را انجام دهیم. بنابراین، وقتی صحبت از تخصیص حافظه میشود آنها کارآمدتر هستند و باید در تمام زبانهای برنامهنویسی مدرن استفاده شوند. بنابراین، این موضوع به یک مبحث موردعلاقه برای دیدگاه مصاحبه تبدیل میشود و اکثر شرکتها به طور کلی در مورد مشکلات موجود در آرایه سؤال میکنند. به همه این دلایل باید دانش خوبی از آن داشته باشیم.
پانوشت:
1. Queues 2. Matrices
3. Dynamic Data Structures
4. Linked Lists 5. Trees
6. cache locality 7. Graphs
8. Array Lists 9. Heaps
10. Hash Tables 11. Vectors
12. records 13. lookup tables
#data_structures
#algorithm
@code_crafters
آرایهها یک ساختمان داده اساسی در علوم کامپیوتر هستند. آنها در طیف گستردهای از برنامههای کاربردی استفاده میشوند، از جمله:
- ذخیرهسازی دادهها برای پردازش
- پیادهسازی ساختمانهای داده مانند استکها و صف¹ها
- نمایش دادهها در جداول و ماتریس²ها
- ایجاد ساختمانهای داده پویا³ مانند لیستهای پیوندی⁴ و درخت⁵ها
مزایای آرایه
- آرایهها اجازه دسترسی تصادفی به عناصر را میدهند. این باعث میشود دسترسی به عناصر بر اساس موقعیت سریعتر شود.
- آرایهها محل ذخیره حافظهپنهان(کَش)⁶ بهتری دارند که تفاوت نسبتاً بزرگی در عملکرد ایجاد میکند.
- آرایهها چندین مورد داده از یک نوع را با استفاده از یک نام واحد نشان میدهند.
- آرایهها برای پیادهسازی سایر ساختمانهای داده مانند لیستهای پیوندی، استکها، صفها، درختها، نمودارها⁷ و غیره استفاده میشوند.
معایب آرایه
- از آنجایی که آرایهها اندازه ثابتی دارند، هنگامی که حافظه به آنها تخصیص یابد، نمیتوان آن را کاهش یا افزایش داد و در صورت لزوم ذخیره دادههای اضافی غیرممکن میشود. آرایهای با اندازه ثابت آرایه ایستا نامیده میشود.
- تخصیص حافظه کمتر از مقدار مورد نیاز به یک آرایه منجر به از دست رفتن دادهها میشود.
- یک آرایه در طبیعت یکدست است، بنابراین، یک آرایه واحد نمیتواند مقادیر انواع دادههای مختلف را ذخیره کند.
- آرایهها دادهها را در مکانهای حافظه پیوسته ذخیره میکنند که پیادهسازی حذف و درج را بسیار دشوار میکند. این مشکل با پیادهسازی لیستهای پیوندی برطرف میشود که امکان دسترسی متوالی به عناصر را فراهم میکند.
برنامههای کاربردی آرایه
آرایهها در برنامههای کاربردی مختلفی استفاده میشوند، از جمله:
- ذخیرهسازی دادهها برای پردازش
- آنها در پیادهسازی سایر ساختمانهای داده مانند لیستهای آرایه⁸، استکها و صفها، هرمها⁹، جداول درهمسازی یا چکیدهسازی(جداول هَش)¹⁰، بُردارها(وِکتور)¹¹ و ماتریسها استفاده میشوند.
- نمایش دادهها در جداول و ماتریسها
- ایجاد ساختمانهای داده پویا مانند لیستهای پیوندی و درختها
- سوابق¹² پایگاه داده معمولاً به صورت آرایه پیادهسازی میشوند.
- در جداول جستجو¹³ توسط کامپیوتر استفاده میشود.
نتیجه
پس از بحث، به این نتیجه رسیدیم که آرایهها روشی ساده برای دسترسی به عناصری از یک نوع با گروهبندی آنها هستند و میتوانیم عناصر را به طور موثر با ایندکسهای آنها پیدا کنیم و میتوانیم با استفاده از آنها عملیات مختلفی را انجام دهیم. بنابراین، وقتی صحبت از تخصیص حافظه میشود آنها کارآمدتر هستند و باید در تمام زبانهای برنامهنویسی مدرن استفاده شوند. بنابراین، این موضوع به یک مبحث موردعلاقه برای دیدگاه مصاحبه تبدیل میشود و اکثر شرکتها به طور کلی در مورد مشکلات موجود در آرایه سؤال میکنند. به همه این دلایل باید دانش خوبی از آن داشته باشیم.
پانوشت:
1. Queues 2. Matrices
3. Dynamic Data Structures
4. Linked Lists 5. Trees
6. cache locality 7. Graphs
8. Array Lists 9. Heaps
10. Hash Tables 11. Vectors
12. records 13. lookup tables
#data_structures
#algorithm
@code_crafters
🔥6👍3❤2