อาร์เรย์ในโครงสร้างข้อมูล – คำอธิบาย ฟังก์ชัน & ตัวอย่าง
เผยแพร่แล้ว: 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. กราฟใช้รายการที่อยู่ติดกันเป็นหนึ่งในการใช้งาน เวกเตอร์ (แอปพลิเคชันของอาร์เรย์) ใช้เพื่อสร้างรายการที่อยู่ติดกันเหล่านี้