Arreglo
แนะนำใหม่| English | ความหมาย |
|---|---|
| array/əˈreɪ/ | arreglo (อาเรย์/ชุดข้อมูลแบบตาราง) |
| element/ˈelɪmənt/ | องค์ประกอบ |
| index/ˈɪndeks/ | ดัชนี |
| lower bound/ˈləʊə baʊnd/ | ขอบเขตล่าง |
| upper bound/ˈʌpə baʊnd/ | ขอบเขตบน |
| dimension/daɪˈmenʃn/ | มิติ |
| nested loops/ˈnestɪd luːps/ | ลูปซ้อนกัน |
| linear search/ˈlɪnɪə sɜːtʃ/ | การค้นหาเชิงเส้น |
| bubble sort/ˈbʌbl sɔːt/ | การเรียงลำดับแบบฟองอากาศ |
ที่นั่ง 14C
- โรงหนังมีที่นั่ง 300 ที่ ระบบจองไม่ได้มีตัวแปร 300 ตัวชื่อว่า
Seat1A,Seat1B,Seat1Cมีเพียง อาเรย์ เดียว และตั๋วของคุณคือที่อยู่ภายในอาเรย์นั้น: แถว 14, ที่นั่ง C - ชื่อเดียว, หลายร้อยค่า, แต่ละตัวหาได้จากตัวเลข เพิ่มแถวหนึ่งโค้ดก็ไม่ต้องเปลี่ยน;วนซ้ำตามตัวเลขและคุณตรวจสอบทุกที่นั่งแล้ว
- เกือบทุกอัลกอริทึมในกระดาษข้อสอบ 2 จะวนผ่านอาเรย์: ค้นหา, รวม, เรียงลำดับ, หาค่าสูงสุด
- บทนี้คือคำศัพท์, การประกาศ, และอัลกอริทึมสี่ชนิดที่กรรมการถามทั้งในรูปแบบ伪代码และคำพูด
คำศัพท์เฉพาะ
- อาเรย์ เป็นโครงสร้างข้อมูลเก็บจำนวนคงที่ของ องค์ประกอบ ของประเภทเดียวกันภายใต้ชื่อเดียว แต่ละองค์ประกอบเข้าถึงได้ด้วย ดัชนี
- ขอบเขตล่าง และ ขอบเขตบน คือดัชนีที่ถูกต้องตัวแรกและตัวสุดท้าย จำนวนองค์ประกอบคือ ขอบเขตบน − ขอบเขตล่าง + 1
- มิติ คือจำนวนดัชนีที่องค์ประกอบต้องการ: หนึ่งสำหรับรายการ, สองสำหรับตาราง
- ใน
ThisArray[n] ← 42อาเรย์มีหนึ่งมิติ, ดัชนีคือตัวแปรINTEGERn, และองค์ประกอบที่ดัชนียังรับค่า42

ชื่อเดียว, ดัชนีสำหรับแต่ละองค์ประกอบ, ขอบเขตทั้งสองด้าน
Arstorage เก็บ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Arstorage คือชุดข้อมูลที่เป็นระเบียบของไอเทมประเภทเดียวกันที่เข้าถึงได้ด้วยดัชนี (Re recordรวมประเภทต่างกัน)
Arstorage เป็นโครงสร้างข้อมูลที่เก็บค่าหลายค่าที่มี ______ ประเภทภายใต้ชื่อเดียว
Difficulty 1/5 · 100 coins + a small bonus on first completion today
แต่ละค่าเข้าถึงได้ด้วยดัชนีของมัน
DECLARE Marks : ARRAY[0:99] OF INTEGER นิยาม Arstorage ที่มี _____ องค์ประกอบ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ขอบเขตบนลบขอบเขตล่างบวกหนึ่ง: 99 − 0 + 1 = 100 ขอบเขตทั้งสองเป็นดัชนีที่ใช้งานได้
ตัวอย่างที่แสดงวิธีทำ: การประกาศอาร์เรย์ที่งานหนึ่งต้องการใช้
- การประกาศต้องมีชื่อ, ขอบเขต และ ประเภทข้อมูล
- 120 ค่าอ่านที่อาจมีทศนิยม:
DECLARE Data : ARRAY[1:120] OF REAL - ตาราง 150 แถวและสองคอลัมน์ข้อความ:
DECLARE Names : ARRAY[1:150, 1:2] OF STRING - บอกจำนวนถ้าถูกถาม:
[0:99]เก็บ 100 องค์ประกอบ, ไม่ใช่ 99
การประกาศใดที่เก็บตารางขนาด 150 แถวและ 2 คอลัมน์ของข้อความ?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
สองมิติ โดยแต่ละมิติมีขอบเขตล่างและบน และชนิดขององค์ประกอบ ตัวเลือกที่สองคือรายการยาวเดียว; ตัวเลือกที่สามไม่มีชนิด; ตัวเลือกที่สี่ไม่มีขอบเขตล่าง
ประมวลผล-array 1-D
DECLARE Names : ARRAY[1:5] OF STRING
Names[3] ← "Cara"
FOR i ← 1 TO 5
OUTPUT Names[i]
NEXT i
- ลูป
FORจากขอบเขตล่างไปขอบเขตบนจะ访问ทุกองค์ประกอบครั้งละหนึ่ง - สำหรับการรวม, นับ, สูงสุด หรือ ต่ำสุด ตั้งตัวแปรสะสมก่อนลูปและอัปเดตภายใน
อาร์เรย์ 2-D
DECLARE Grid : ARRAY[1:3, 1:4] OF INTEGER
Grid[2, 3] ← 99 // row 2, column 3
- ดัชนีแรกคือ แถว, ดัชนีที่สองคือ คอลัมน์ ลูปซ้อน akan访问ทุกเซลล์: ลูปนอกวนแถว, ลูปในวนคอลัมน์
- ใช้ 1-D สำหรับลำดับเดียวและ 2-D เมื่อข้อมูลมีสองมิติตามธรรมชาติ เช่น กริดที่นั่งหรือตารางคะแนนตามนักเรียนและวิชา

Grid[row, column], ต้องเรียงตามนั้นเสมอ
ใช้ดัชนี Arreglo 2 มิติด้วย [row, column]
Arreglo 2 มิติคือตาราง Grid[row, column] เข้าถึงเซลล์เพียงจุดเดียว — เปลี่ยนแถวและคอลัมน์เพื่อดูว่าคุณจะตกอยู่ที่ค่าไหน
ใน Grid[2, 3] เซลล์ใดจะถูกเข้าถึง?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ดัชนีแรกคือแถว ดัชนีที่สองคือคอลัมน์ — ดังนั้นคือแถวที่ 2, คอลัมน์ที่ 3
ตัวอย่างที่แสดงวิธีทำ: การค้นหาแบบเชิงเส้นที่แจ้งได้ว่า "ไม่พบ"
- การค้นหาเชิงเส้น ตรวจสอบแต่ละองค์ประกอบทีละตัวตั้งแต่ตัวแรกจนกว่าจะเจอเป้าหมายหรือจบสิ้น
FoundAt ← -1
FOR i ← 1 TO n
IF A[i] = Target THEN
FoundAt ← i
ENDIF
NEXT i
IF FoundAt = -1 THEN
OUTPUT "Not found"
ELSE
OUTPUT "Found at ", FoundAt
ENDIF
-1ไม่สามารถเป็นดัชนีที่ถูกต้องได้เลย ดังนั้นหมายถึง "ไม่พบ" เริ่มค่ามัน ก่อน ลูปและทดสอบมัน หลัง การค้นหาที่ไม่เคยบอกว่า "ไม่พบ" จะเสียคะแนน
การค้นหาลายเส้น (linear search) หาค่าโดย:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การค้นหาลายเส้นตรวจสอบองค์ประกอบทีละตัวจากต้นจนกว่าจะพบเป้าหมาย (หรือถึงท้าย)
การตั้งค่า FoundAt เป็น -1 ก่อนการค้นหาลายเส้นช่วยให้โปรแกรมรายงาน "ไม่พบ" หลังจบลูป
Difficulty 1/5 · 100 coins + a small bonus on first completion today
-1 ไม่เคยเป็นดัชนีที่ถูกต้อง ดังนั้นหากไม่เปลี่ยนหลังจบลูป แสดงว่าเป้าหมายไม่มีในอาร์เรย์
ค่าที่ใหญ่ที่สุด และตำแหน่งของค่า tersebut
Largest ← A[1]
Position ← 1
FOR i ← 2 TO n
IF A[i] > Largest THEN
Largest ← A[i]
Position ← i
ENDIF
NEXT i
OUTPUT Largest, " at ", Position
- เริ่ม
Largestที่องค์ประกอบแรก อย่าเริ่มที่ 0: อาร์เรย์อาจมีค่าติดลบทั้งหมด - รูปทรงเดียวกันนับหรือแสดงค่าที่ไม่ว่าง: เปรียบเทียบแต่ละค่ากับเครื่องหมายของตำแหน่งที่ไม่ใช้,
""หรือ-1, แล้วนับเฉพาะค่าที่แตกต่างกันเท่านั้น
การเรียงลำดับแบบฟองอากาศ (Bubble sort)
- การเรียงลำดับแบบฟองอากาศ จะวนผ่านอาร์เรย์ซ้ำๆ โดยเปรียบเทียบคู่ที่อยู่ติดกันและสลับตำแหน่งของคู่ที่ผิดลำดับ จนกว่าจะมีการวนผ่านหนึ่งรอบโดยไม่มีการสลับ
- หลังจากการวนผ่านแต่ละรอบ ค่าที่ยังไม่เรียงลำดับและมีขนาดใหญ่ที่สุดจะถูกดันไปไว้ที่ท้ายอาร์เรย์แล้ว ดังนั้นการวนผ่านถัดไปจึงสามารถหยุดก่อนหน้าหนึ่งตำแหน่งได้
REPEAT
Swapped ← FALSE
FOR Index ← 1 TO Limit - 1
IF Data[Index] > Data[Index + 1] THEN
Temp ← Data[Index]
Data[Index] ← Data[Index + 1]
Data[Index + 1] ← Temp
Swapped ← TRUE
ENDIF
NEXT Index
Limit ← Limit - 1
UNTIL Swapped = FALSE

การวนผ่านแต่ละรอบจะดันค่าที่เหลืออยู่ที่มีขนาดใหญ่ที่สุดไปที่ท้าย
เรียงลำดับขั้นตอนของการสแกนหนึ่งรอบของbubble-sort และจุดสิ้นสุด
Difficulty 3/5 · 200 coins + a small bonus on first completion today
รีเซ็ตเฟล็ก ทำการสแกนและสลับ ลดขีดจำกัด หยุดเมื่อรอบหนึ่งไม่มีการสลับเลย
ตัวอย่างวิธีทำ: ตำแหน่งของเครื่องหมายการเรียงลำดับแบบฟองอากาศ
- ลูปภายนอกที่ทำซ้ำจนกว่าการวนผ่านหนึ่งรอบจะไม่มีการสลับ; ตัวบ่งชี้
Swappedรีเซ็ตเป็นFALSEที่เริ่มต้นของการวนผ่านแต่ละรอบ และถูกตั้งค่าเป็นTRUEภายในIF - การสลับ แบบสามบรรทัดโดยใช้อตัวแปรชั่วคราว สองบรรทัดจะสูญเสียค่าลง
- ขีดจำกัดที่หดเล็กลง ลดลงหนึ่งหน่วยในการวนผ่านแต่ละรอบ เนื่องจากค่าที่ใหญ่ที่สุดได้เข้าสู่尾盘แล้ว
- ในเชิงคำพูด สำหรับคำถามเรื่องการปรับแต่งขั้นบันได: ทำซ้ำจนกว่าจะเรียงลำดับเสร็จ; ในการวนผ่านแต่ละรอบให้เปรียบเทียบคู่ที่อยู่ติดกัน; สลับคู่ใดก็ตามที่ผิดลำดับ; หลังจากการวนผ่านแต่ละรอบ ค่าที่ยังไม่เรียงลำดับและมีขนาดใหญ่ที่สุดจะอยู่ที่尾盘
คุณสมบัติใดให้คะแนนในการทำ bubble sort ที่มีประสิทธิภาพ? เลือก ทั้งหมด ที่ถูกต้อง
Difficulty 2/5 · 140 coins + a small bonus on first completion today
เฟล็ก, สลับด้วยตัวแปรชั่วคราว, ลดขีดจำกัด: นั่นคือสิ่งที่ให้คะแนน การคัดลอกอาร์เรย์ไม่ใช่ส่วนหนึ่งของอัลกอริทึม
ตัวอย่างวิธีทำ: การลบและการแทรก
- ลบรายการ: หาดัชนีด้วย线性搜索 (linear search); ย้ายองค์ประกอบทั้งหมดที่อยู่ถัดไปเข้าหาจุดเริ่มต้นหนึ่งตำแหน่งเพื่อให้ช่องว่างปิดลง; กำหนดให้องค์ประกอบสุดท้ายไม่ใช้งาน หรือลดจำนวนนับลง
- แทรกในอาร์เรย์ที่เรียงลำดับแล้ว: หาดัชนีแรกที่มีองค์ประกอบมีค่ามากกว่า; ย้ายองค์ประกอบนั้นและองค์ประกอบทั้งหมดที่อยู่ถัดไปเข้าหา尾盘หนึ่งตำแหน่ง โดยเริ่มจากองค์ประกอบสุดท้าย; เก็บค่าใหม่ลงในช่องว่าง
- ย้ายจาก 尾盘 เมื่อเปิดช่องว่าง และย้ายจาก จุดเริ่มต้น เมื่อปิดช่องว่าง มิฉะนั้นจะทับค่าที่กำลังจะย้ายอยู่
อาร์เรย์เก็บหลายรายการที่มีชนิดเดียวกัน ซึ่งเข้าถึงได้โดยดัชนี ในขณะที่เรคอร์ดรวมฟิลด์ที่มี (อาจเป็น) ชนิดต่างกัน ซึ่งเข้าถึงได้โดยชื่อ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
อาร์เรย์ 2 มิติเหมาะสำหรับตาราง (แถว × คอลัมน์); เรคอร์ดเหมาะสำหรับสิ่งหนึ่งที่ถูกอธิบายด้วยฟิลด์ที่มีชื่อหลายอัน
คะแนนที่หลุดหายไป
[0:99]เก็บข้อมูลได้ 100 องค์ประกอบ นับขอบเขตทั้งสองข้าง- ดัชนีคือ
INTEGER; การประกาศต้องระบุทั้ง ประเภท และขอบเขตด้วย Grid[row, column]: แถวมาก่อน การสลับ将它们 will read the wrong cell in every nested loop.- การสลับต้องการตัวแปรชั่วคราว; การค้นหาต้องการเส้นทาง "ไม่พบ"; การเรียงลำดับแบบฟองอากาศจะจบเมื่อการวนผ่านหนึ่งรอบไม่มีการสลับ ไม่ใช่หลังจากการวนผ่านจำนวนที่กำหนดตายตัว
คุณเข้าใจแล้ว
- อาร์เรย์ เก็บองค์ประกอบชนิดเดียวกันจำนวนคงที่ภายใต้ชื่อเดียว เข้าถึงได้ด้วย ดัชนี ระหว่าง ขอบเขตล่าง และ ขอบเขตบน; จำนวน = ขอบเขตบน − ขอบเขตล่าง + 1
- 1-D คือรายการ, 2-D เป็นตาราง
[row, column]เข้าถึงด้วยลูปซ้อนกัน; ประกาศด้วยขอบเขต และ ประเภทข้อมูล - linear search:
FoundAt ← -1, ลูป, เก็บดัชนี, ทดสอบหลังลูป; ค่าสูงสุด: เริ่มต้นที่A[1], รักษาตำแหน่ง - bubble sort: การวนผ่านเปรียบเทียบและสลับคู่ที่อยู่ติดกันพร้อมตัวแปรชั่วคราว, ตัวบ่งชี้
Swapped, ขีดจำกัดที่หดเล็กลง, จนกว่าการวนผ่านหนึ่งรอบจะไม่มีการสลับ