อาร์เรย์ในโครงสร้างข้อมูล – คำอธิบาย ฟังก์ชัน & ตัวอย่าง

เผยแพร่แล้ว: 2021-06-21

โครงสร้างข้อมูลได้รับการพิสูจน์แล้วว่าเป็นส่วนสำคัญของภาษาเขียนโปรแกรมเกือบทั้งหมด ซึ่งถูกนำไปใช้อย่างกว้างขวางในโปรแกรมคอมพิวเตอร์ส่วนใหญ่ ผ่านโครงสร้างข้อมูลที่โปรแกรมสามารถจัดการและเข้าถึงข้อมูลได้อย่างมีประสิทธิภาพ เนื่องจากการเข้าถึงและจัดเก็บข้อมูลเดี่ยวแยกจากกันเป็นกระบวนการที่ใช้เวลานาน อัลกอริธึมได้รับการออกแบบมาโดยเฉพาะเพื่อสร้างการดำเนินการเฉพาะที่จำเป็นในโครงสร้างข้อมูล ดังนั้น โครงสร้างข้อมูลและอัลกอริธึม จึง เป็นรากฐานของแอพพลิเคชั่นและโปรแกรมที่ซับซ้อน

ในบทความนี้เราจะเน้นไปที่ประเภทของโครงสร้างข้อมูล เช่น Array

อาร์เรย์เป็นโครงสร้างข้อมูลประเภทหนึ่งที่องค์ประกอบหรือข้อมูลถูกจัดเก็บในตำแหน่งที่ต่อเนื่องกัน เมื่อใดก็ตามที่ผู้ใช้มีชุดข้อมูลที่มีประเภทข้อมูลเดียวกัน โครงสร้างข้อมูลอาร์เรย์ จะเป็นตัวเลือกสำหรับการจัดระเบียบข้อมูลนั้น ขนาดของอาร์เรย์ขึ้นอยู่กับขนาดของข้อมูล ก่อนที่องค์ประกอบจะถูกเก็บไว้ในอาร์เรย์ จะต้องกำหนดขนาดของอาร์เรย์เพื่อให้รวมองค์ประกอบทั้งหมดได้อย่างมีประสิทธิภาพ แต่ละองค์ประกอบที่เก็บไว้ในอาร์เรย์มีค่าดัชนีที่กำหนดซึ่งช่วยในการระบุตำแหน่งขององค์ประกอบนั้นในอาร์เรย์ องค์ประกอบแรกของอาร์เรย์มีค่าดัชนีเป็นศูนย์

คำสำคัญที่เกี่ยวข้องกับ โครงสร้างข้อมูลอาร์เรย์ คือ:

  • องค์ประกอบ : องค์ประกอบแทนทุกวัตถุหรือรายการที่จัดเก็บไว้ในโครงสร้างข้อมูล
  • ดัชนี : ดัชนีแสดงถึงตำแหน่งขององค์ประกอบในอาร์เรย์ มีค่าเป็นตัวเลข

ขนาดของอาร์เรย์จะเปลี่ยนไปตามภาษาโปรแกรมต่างๆ อาร์เรย์อาจมีสองประเภทตามขนาด: อาร์เรย์แบบสแตติกและไดนามิก

สารบัญ

1. อาร์เรย์แบบคงที่:

อาร์เรย์ประเภทนี้มีขนาดที่กำหนดไว้ล่วงหน้าในระหว่างการสร้าง ด้วยเหตุนี้อาร์เรย์แบบคงที่จึงเรียกว่าอาร์เรย์คงที่หรืออาร์เรย์ที่มีความยาวคงที่ อาร์เรย์สามารถกำหนดได้สองวิธี สามารถกำหนดองค์ประกอบของอาร์เรย์ในขณะที่สร้างอาร์เรย์หรือกำหนดขนาดของอาร์เรย์ได้ในขณะที่สร้างอาร์เรย์ ในกรณีหลังนี้ ไม่จำเป็นต้องระบุองค์ประกอบ ค่าเริ่มต้นอาจถูกจัดสรรให้กับอาร์เรย์ที่ไม่ได้กำหนดค่าเริ่มต้นหรือค่าที่เหลืออยู่ในหน่วยความจำจากการจัดสรรก่อนหน้านี้

อาร์เรย์ไม่สามารถย่อหรือขยายได้เมื่อกำหนดขนาดแล้ว เนื่องจากหน่วยความจำได้รับการจัดสรรในระหว่างการประกาศอาร์เรย์ จึงมีเพียงคอมไพเลอร์เท่านั้นที่สามารถทำลายอาร์เรย์ได้ ไม่สามารถเพิ่มองค์ประกอบได้ เนื่องจากผู้ใช้ไม่แน่ใจว่ามีหน่วยความจำว่างเหลืออยู่เพื่อจัดสรรให้กับองค์ประกอบถัดไปหรือไม่

ตารางด้านล่างแสดงตัวอย่างอาร์เรย์ที่ใช้ในภาษาการเขียนโปรแกรมต่างๆ

ภาษาโปรแกรม กำหนดเนื้อหาอาร์เรย์ กำหนดขนาดของอาร์เรย์ที่ไม่มีเนื้อหา
C++ เครื่องหมาย int[] = {10, 20, 30}; เครื่องหมาย int[3];
ค# int[] เครื่องหมาย = {10, 20, 30}; int[] เครื่องหมาย = = int ใหม่[3];
Java int[] เครื่องหมาย = {10, 20, 30}; int[] เครื่องหมาย = = int ใหม่[3];
JavaScript เครื่องหมาย var = [10, 20, 30]; เครื่องหมาย var = อาร์เรย์ใหม่ (3);
Python เครื่องหมาย = [10, 20, 30] เครื่องหมาย = [ไม่มี] * 3
Swift ค่า var:[Int] = [10, 20, 30] เครื่องหมาย var: [Int] = [Int](ซ้ำ: 0, นับ: 3)

2. ไดนามิกอาร์เรย์

ตามชื่อที่แนะนำอาร์เรย์เป็นไดนามิกซึ่งหมายความว่าสามารถเพิ่มองค์ประกอบหรือสามารถลบออกได้ระหว่างรันไทม์ อาร์เรย์ไดนามิกไม่มีความยาวหรือขนาดของอาร์เรย์คงที่เมื่อเทียบกับอาร์เรย์แบบคงที่ที่มีความยาวคงที่ ฟังก์ชันไลบรารีมาตรฐานหรือฟังก์ชันในตัวพร้อมใช้งานในภาษาการเขียนโปรแกรมส่วนใหญ่เพื่อสร้างและจัดการอาร์เรย์ไดนามิก

ตารางด้านล่างแสดงการสร้างอาร์เรย์ในภาษาการเขียนโปรแกรมต่างๆ

ภาษาโปรแกรม ระดับ การเพิ่มองค์ประกอบ การกำจัดองค์ประกอบ
C++ #include <list>

มาตรฐาน::รายการ

แทรก ลบ
ค# System.Collections.Generic.List เพิ่ม ลบ
Java java.util.ArrayList เพิ่ม ลบ
JavaScript Array ดัน, ประกบ ป๊อป ประกบ
Python รายการ ผนวก ลบ
Swift Array ผนวก ลบ

การเป็นตัวแทนของอาร์เรย์

การแสดงอาร์เรย์จะแตกต่างกันไปตามการใช้งานในภาษาโปรแกรมต่างๆ อาร์เรย์เป็นส่วนสำคัญของ โครงสร้างข้อมูลไพ ธอน มีการแสดงภาพประกอบในภาษาโปรแกรมไพธอน

ใน อาร์เรย์ โครงสร้างข้อมูลหลาม ได้รับการจัดการผ่าน อาร์เรย์ คำ หลัก เมื่อใดก็ตามที่มีการใช้อาร์เรย์ของคำหลัก ผู้ใช้จะต้องจัดเก็บองค์ประกอบของประเภทข้อมูลเดียวกัน

แหล่งที่มา

รูปที่ 1: ตัวอย่างของอาร์เรย์

ตามรูปที่ 1 ภาพประกอบของอาร์เรย์แสดงให้เห็นว่า

  • ขนาดของอาร์เรย์คือ 10 ซึ่งหมายความว่า 9 องค์ประกอบสามารถเก็บไว้ในอาร์เรย์ได้
  • มีการกล่าวถึงค่าดัชนีเหนืออาร์เรย์ที่เริ่มต้นด้วยค่า 0
  • องค์ประกอบที่เก็บไว้ในอาร์เรย์สามารถเป็นประเภทข้อมูลใดก็ได้ และองค์ประกอบสามารถเข้าถึงได้ผ่านค่าดัชนี

มีการแสดงภาพประกอบอื่นใน รูปที่ 2 ซึ่งมีการอธิบายไวยากรณ์ของ python และ C++

แหล่งที่มา

รูปที่ 2 : การประกาศอาร์เรย์โดยใช้ python และ C++ (

คุณสมบัติของอาร์เรย์

โครงสร้าง ข้อมูลอาร์เรย์ มีคุณสมบัติหลายประการ:

  • องค์ประกอบที่จัดเก็บภายในอาร์เรย์มีประเภทข้อมูลเหมือนกันและมีขนาดเท่ากัน กล่าวคือ ชนิดข้อมูลของ int จะมีขนาด 4 ไบต์
  • ตำแหน่งหน่วยความจำที่อยู่ติดกันใช้สำหรับจัดเก็บองค์ประกอบของโครงสร้างข้อมูล หน่วยความจำที่เล็กที่สุดจะถูกจัดสรรให้กับองค์ประกอบแรกในอาร์เรย์
  • ค่าดัชนีใช้เพื่อค้นหาตำแหน่งขององค์ประกอบในอาร์เรย์ ดัชนีเริ่มต้นด้วย 0 และน้อยกว่าจำนวนองค์ประกอบทั้งหมดในอาร์เรย์เสมอ
  • การเข้าถึงโดยสุ่มขององค์ประกอบในอาร์เรย์เป็นไปได้เนื่องจากค่าดัชนีที่มีอยู่ ที่อยู่ขององค์ประกอบสามารถคำนวณได้โดยใช้ที่อยู่ฐานที่เพิ่มเป็นค่าออฟเซ็ต
  • แนวคิดของอาร์เรย์ยังคงเหมือนเดิมในภาษาการเขียนโปรแกรมทั้งหมด เฉพาะการเริ่มต้นและการประกาศเท่านั้นที่แตกต่างกัน
  • ชื่ออาร์เรย์ องค์ประกอบ และประเภทข้อมูลเป็นสามส่วนที่เหมือนกันในทุกภาษา

การสร้างอาร์เรย์

การสร้างอาร์เรย์ใน โครงสร้างข้อมูลหลาม แสดงไว้ด้านล่าง

  • โมดูล อาร์เรย์ ใน โครงสร้าง ข้อมูลหลาม สามารถนำเข้าเพื่อสร้างอาร์เรย์ได้
  • array(data_type, value_list ) เป็นไวยากรณ์ที่สามารถสร้างอาร์เรย์ใน โครงสร้าง ข้อมูล หลาม
  • ชนิดข้อมูลควรเป็นจำนวนเต็มหรือจำนวนจริง ไม่อนุญาตให้ใช้สตริงใน python

รูปที่ 2 แสดงวิธีการสร้างอาร์เรย์ใน python ตัวอย่างโค้ดเพื่อแสดงว่านำเข้าโมดูลอาร์เรย์ใน python . อย่างไร

นำเข้าอาร์เรย์

เครื่องหมาย = array.array('i', [100,200,300])

พิมพ์ (เครื่องหมาย)

การประกาศอาร์เรย์สามารถทำได้โดย

arrayName = array.array (รหัสประเภทสำหรับประเภทข้อมูล [array,items])

สามารถแสดงใน รูปที่3

แหล่งที่มา

รูปที่ 3: การประกาศอาร์เรย์ใน python

คำสำคัญที่ใช้ในการสร้างอาร์เรย์:

  • Identifier: ชื่อที่ต้องระบุเหมือนชื่อตัวแปร
  • โมดูล: ต้องนำเข้าโมดูลพิเศษที่เรียกว่าอาร์เรย์ในไพ ธ อน
  • วิธีการ: เป็นวิธีการเฉพาะในการเริ่มต้นอาร์เรย์ในหลาม สองอาร์กิวเมนต์กินแล้ว typecode และองค์ประกอบ
  • รหัสประเภท: ต้องระบุประเภทข้อมูลด้วยรหัสประเภทที่มีอยู่
  • องค์ประกอบ: ต้องระบุองค์ประกอบอาร์เรย์ภายในวงเล็บเหลี่ยม เช่น [200,400,100]

รหัสประเภทที่มีอยู่แสดงอยู่ด้านล่าง

การทำงานของอาร์เรย์

ด้วยความพร้อมใช้งานของ โครงสร้างข้อมูลและอัลกอริธึม การดำเนินการหลายอย่างสามารถทำได้ในโครงสร้างข้อมูลประเภทใดก็ได้ โครงสร้าง ข้อมูลอาร์เรย์ สามารถมีการดำเนินการต่างๆ เช่น การเพิ่ม การลบ ภาคยานุวัติ และการอัปเดตองค์ประกอบ

การดำเนินการที่สามารถทำได้ในอาร์เรย์ของ โครงสร้างข้อมูล python มี ดังต่อไปนี้

1. การเพิ่มองค์ประกอบในอาร์เรย์

  • ฟังก์ชัน insert() ในตัวใช้สำหรับเพิ่มองค์ประกอบลงในอาร์เรย์
  • ไวยากรณ์ ที่ใช้ : arrayName.insert(index, value)
  • คุณสามารถเพิ่มองค์ประกอบอย่างน้อยหนึ่งรายการลงในอาร์เรย์ผ่านฟังก์ชัน insert()
  • คุณสามารถเพิ่มองค์ประกอบที่จุดเริ่มต้นของอาร์เรย์หรือที่ตำแหน่งใด ๆ โดยใช้ฟังก์ชัน Input: append()

นำเข้าอาร์เรย์

เครื่องหมาย = array.array('i', [200,500,600])

เครื่องหมาย.แทรก(1, 150)

เอาต์พุต: อาร์เรย์ ('i', [200,150,500,600])

ตัวอย่างพร้อมรหัสแสดงด้านล่างนำมาจาก

ผลลัพธ์ของรหัส:

แหล่งที่มา

2. การลบองค์ประกอบในอาร์เรย์

  • องค์ประกอบสามารถลบออกจากอาร์เรย์ผ่านค่าของมันได้
  • ไวยากรณ์ที่ใช้: arrayName.remove(value)
  • ตัวอย่าง: การลบค่า 250 หลังจากเพิ่มในอาร์เรย์ที่มีองค์ประกอบ 100, 300, 200, 500 และ 800

ป้อนข้อมูล:

นำเข้าอาร์เรย์

เครื่องหมาย = array.array('i', [100,300,200,500,800])

เครื่องหมาย.แทรก(1, 250)

พิมพ์ (เครื่องหมาย)

เครื่องหมาย ลบ (250)

เอาต์พุต: อาร์เรย์ ('i', [100,300,200,500,800])

ตัวอย่างโค้ดที่นำมาจาก

แหล่งที่มา

ผลลัพธ์ของรหัส:

3. การเข้าถึงองค์ประกอบในอาร์เรย์

  • ตัวดำเนินการดัชนี [ ] ใช้สำหรับเข้าถึงองค์ประกอบในอาร์เรย์
  • หมายเลขดัชนีใช้เพื่อเข้าถึงองค์ประกอบใดๆ ในอาร์เรย์

ตัวอย่างของรหัสที่แสดงด้านล่างนำมาจาก

ผลลัพธ์ของรหัส:

แหล่งที่มา

4. ค้นหาองค์ประกอบในอาร์เรย์

  • เมธอด In-built index() ใช้สำหรับค้นหาองค์ประกอบในอาร์เรย์
  • ค่าดัชนีขององค์ประกอบที่จะค้นหาถูกส่งกลับโดยฟังก์ชัน
  • ตัวอย่าง: ค้นหาองค์ประกอบ 250 ในอาร์เรย์ขององค์ประกอบ 100, 250, 300, 200, 500 และ 800

อินพุต: นำเข้าอาร์เรย์

เครื่องหมาย = array.array('I', [100,250,300,200,500,800])

พิมพ์(marks.index(250))

เอาท์พุต: 1

รหัสสำหรับค้นหาองค์ประกอบในอาร์เรย์

ผลลัพธ์ของรหัสคือ

แหล่งที่มา

3. การอัปเดตองค์ประกอบในอาร์เรย์

  • กระบวนการอัปเดตองค์ประกอบคล้ายกับวิธีการแทรก โดยมีความแตกต่างเพียงอย่างเดียวคือในขณะที่อัปเดตค่าที่มีอยู่จะถูกแทนที่ที่ดัชนีที่กำหนด
  • ค่าใหม่ถูกกำหนดให้กับดัชนีใหม่สำหรับการอัพเดตองค์ประกอบในอาร์เรย์
  • ตัวอย่าง: การอัพเดตองค์ประกอบ 250 ด้วย 350 ในอาร์เรย์ขององค์ประกอบ 100, 250, 300, 200, 500 และ 800

อินพุต: นำเข้าอาร์เรย์

เครื่องหมาย = array.array('i', [100,250,300,200,500,800])

เครื่องหมาย [1] = 350

เอาท์พุท:

อาร์เรย์ ('ฉัน', [100,350,300,200,500,800])

รหัสที่แสดงการอัปเดตขององค์ประกอบแสดงอยู่ด้านล่าง

ผลลัพธ์ของรหัสคือ

แหล่งที่มา

ข้อดีของอาร์เรย์

  • การจัดเก็บค่าหลายค่าในตัวแปรเดียวทำได้ แทนที่จะสร้างตัวแปรแยกกันสำหรับแต่ละองค์ประกอบ
  • สามารถประมวลผลค่าหลายค่าได้อย่างง่ายดายและรวดเร็วด้วยการใช้อาร์เรย์
  • องค์ประกอบของอาร์เรย์สามารถจัดเรียงและค้นหาได้เร็วขึ้น

บทสรุป

บทความนี้กล่าวถึงโครงสร้างข้อมูลชนิดพิเศษ เช่น อาร์เรย์และการดำเนินการที่เกี่ยวข้อง ด้วยแนวคิดพื้นฐาน โปรแกรมที่ซับซ้อนมากขึ้นสามารถสร้างขึ้นเพื่อกำหนดเป้าหมายปัญหาในชีวิตจริง หากคุณต้องการเสริมความแข็งแกร่งให้กับรากฐานของแนวคิดโครงสร้างข้อมูลของคุณใน python คุณสามารถอ้างอิงหลักสูตร Executive PG Program ใน Data Science ได้โดย upGrad หลักสูตรนี้ได้รับการรับรองโดย IIIT-Bangalore และมีเครื่องมือการเขียนโปรแกรมและภาษามากกว่า 14 ภาษาเพื่อเตรียมการเดินทางของคุณสู่อุตสาหกรรม ได้รับการออกแบบมาเป็นพิเศษสำหรับมืออาชีพระดับเริ่มต้นภายในกลุ่มอายุ 21 ถึง 45 ปี ดังนั้น อย่าหยุดการเรียนรู้ของคุณที่นี่ และเรียนรู้ภาษาและการประยุกต์ใช้ในโลกแห่งการเรียนรู้ของเครื่องผ่านหลักสูตร upGrad ในกรณีที่คุณมีคำถามใด ๆ ทีมช่วยเหลือของเราจะคอยช่วยเหลือคุณ

ข้อดีและข้อเสียของอาร์เรย์คืออะไร?

อาร์เรย์เป็นโครงสร้างข้อมูลเชิงเส้นที่มีประสิทธิภาพ อย่างไรก็ตาม มีข้อดีและข้อเสียบางประการที่กล่าวถึงด้านล่าง:
ข้อดี
1. ในอาร์เรย์ องค์ประกอบสามารถเข้าถึงได้ง่ายด้วยหมายเลขดัชนี
2. อาร์เรย์สามารถใช้เพื่อจัดเก็บเอนทิตีที่คล้ายคลึงกันหลายรายการ
3. การดำเนินการค้นหาค่อนข้างสะดวก สามารถทำได้ในเวลา O(n) และ O(log n) ในอาร์เรย์ที่เรียงลำดับ โดยที่ n คือจำนวนขององค์ประกอบ
ข้อเสีย
1. เนื่องจากหน่วยความจำได้รับการจัดสรรแบบคงที่ในอาร์เรย์ จึงไม่สามารถเปลี่ยนแปลงขนาดของอาร์เรย์ได้
2. เป็นเนื้อเดียวกัน กล่าวคือ เฉพาะองค์ประกอบที่มีประเภทข้อมูลที่คล้ายกันเท่านั้นที่สามารถจัดเก็บในอาร์เรย์ได้

แยกความแตกต่างระหว่างอาร์เรย์และรายการ?

ต่อไปนี้แสดงให้เห็นถึงความแตกต่างระหว่างอาร์เรย์และรายการ
อาเรย์ -
1. โครงสร้างข้อมูลอาร์เรย์เป็นเนื้อเดียวกัน กล่าวคือ เฉพาะองค์ประกอบที่มีประเภทข้อมูลที่คล้ายคลึงกันเท่านั้นที่สามารถเก็บไว้ในอาร์เรย์ได้
2. ต้องนำเข้าโมดูลก่อนใช้อาร์เรย์
3. การคำนวณทางคณิตศาสตร์มีผลโดยตรง
4. ต้องการข้อมูลขนาดใหญ่
4. กะทัดรัดกว่ามากและใช้หน่วยความจำน้อยลง
รายการ -
1. รายการต่างกันและสามารถจัดเก็บองค์ประกอบของข้อมูลหลายประเภทไว้ข้างในได้
2. ไม่จำเป็นต้องนำเข้าโมดูลเนื่องจากเป็น inbuilt ใน Python
3. การดำเนินการเลขคณิตไม่สามารถทำได้โดยตรง
4. ต้องการข้อมูลที่มีขนาดเล็กลง
5. การใช้หน่วยความจำมีมากขึ้น

อธิบายการใช้งานหลักของอาร์เรย์?

โครงสร้างข้อมูลอาร์เรย์มีแอปพลิเคชันมากมายในชีวิตจริง และยังใช้เป็นฐานสำหรับการนำโครงสร้างข้อมูลอื่นๆ ที่ผู้ใช้กำหนดเองไปใช้งาน แอปพลิเคชันที่สำคัญบางอย่างของอาร์เรย์มีดังนี้:
1. อาร์เรย์ใช้เพื่อดำเนินการและดำเนินการกับเมทริกซ์ เมทริกซ์ส่วนใหญ่จะใช้ในการสำรวจทางธรณีวิทยาและการทดลองทางวิทยาศาสตร์และการวิจัย
2. โครงสร้างข้อมูลที่กำหนดโดยผู้ใช้หลายแบบถูกนำมาใช้โดยใช้โครงสร้างข้อมูลอาร์เรย์ ซึ่งรวมถึงสแต็ก คิว ฮีป ตารางแฮช และรายการ
3. โปรแกรมใช้อาร์เรย์เพื่อควบคุมโฟลว์การควบคุม แทนที่จะใช้คำสั่ง elif แบบดั้งเดิม ซึ่งค่อนข้างยาวเมื่อเปรียบเทียบ
4. อัลกอริธึมที่เขียนขึ้นสำหรับกระบวนการจัดตารางเวลา CPU ยังใช้โครงสร้างข้อมูลอาร์เรย์เพื่อเพิ่มประสิทธิภาพของ CPU
5. กราฟใช้รายการที่อยู่ติดกันเป็นหนึ่งในการใช้งาน เวกเตอร์ (แอปพลิเคชันของอาร์เรย์) ใช้เพื่อสร้างรายการที่อยู่ติดกันเหล่านี้