10:312, and finally then we will reach the last index in the array.
10:36Like in this example, when we are at index 9
10:39the next index for me is index 0. We can imagine this array
10:43something like this, remember this is only a logical way of looking at the
10:47array.
10:48An circular interpretation of array, if I'm pointing to a position and my current
10:52position is
10:53i then the next position or next index will not simply be i + 1,
10:58it will be i + 1 Modulo the number of
11:01elements in array or the size of array. Let's say,
11:04N is the number of elements in array, then the next position will be
11:08i + 1 Modulo N. The modulo operation will get us
11:12the remainder upon dividing by N for
11:15any i other than N - 1. This modulo operational will not have any effect,
11:20but for i = N - 1 next position will be
11:25N module N which will be equal to 0. When you divide the number by
11:29itself,
11:30the remainder is 0. Previous position in circular interpretation of
11:34array,
11:35will be I + (N - 1) modulo N.
11:38We could simply say I-1 modulo N, just to make sure this expression inside
11:43the parenthesis is always positive,
11:45I'm adding N here. Give this some thought. You should be able to get why it should
11:50be
11:50(i + (N - 1)) modulo N. Now with this interpretation of array,
11:54we can
11:55increment rear in an enqueue operation
11:58as long as there is any unused cell in the array.
12:01I'm going to modify functions in my pseudo code now.
12:04Isempty will remain the same we are still saying that, for an empty Queue
12:09front and rear will be -1.
12:11Let's scroll down and come to enqueue. Now, in circular interpretation I will call my
12:16Queue full, when the position next to rear
12:19in circular interpretation that we will calculate as
12:23(rear + 1) modulo N, will be equal to
12:26front, so we will have a situation like this. Right now,
12:30the next position to rear in circular interpretation
12:34is front. So there is no unused cell. The complete
12:38array is exhausted. Nothing will change in this condition.
12:41If Queue is empty, we can simply set front and rear as 0.
12:45In the last else condition, we will increment rear
12:49like this, we will say rear = (rear+1) modulo N
12:53where N is number of elements in the array. With this much change, my enqueue function is
12:59good.
12:59Now let's make a call to enqueue and insert something
13:02in this array here, I want to insert number 15.
13:06We will come to this last else condition, Rear right now is 9, so this
13:11expression
13:12will be (9 + 1) modular N, N is 10 here
13:15the size of this array A is 10 here.
13:19This will evaluate to 0, now my new rear
13:22is 0. I'll write number 15 here.
13:26Let's now see what we need to do in dequeue function.
13:29Nothing will change in the first two conditions, if Queue is already empty
13:34or if there is only one element in the Queue, we will handle these cases
13:38in same manner in the final else when we are incrementing front,
13:43we need to increment it in a circular manner so we will say
13:46fornt = (front + 1) modulo N
13:49where N is the number of elements in the array, total number of elements in the array, or size
13:53of array.
13:55Now let's perform a dequeue, we will come to this condition front right now
14:00is 2 so this will be (2 + 1) modulo 10,
14:04one more cell is available to us now.
14:08This much is the core of our implementation. Front operation will be
14:11really straightforward, we simply need to return the element at front index.
14:16Here also, we first need to check whether the Queue is
14:19empty or not, we should return a[front] only when
14:23front is not equal to -1. All these operations all these functions that have
14:27written here will take constant
14:29time, there complexity will be O(1). We are performing simple arithmetic and
14:34assignments in the functions,
14:36and not doing anything costly like running the loop,
14:40so time taken will not depend upon size of Queue or some other variable.
14:44I leave this here it should not be very difficult converting this pseudo code
14:49to a
14:50running program in a language of your choice, If you want to see my code
14:54you can check the description of this video for a link. Thanks for watching.
10: 312, และในที่สุดแล้วเราจะไปถึงดัชนีที่ผ่านมาในอาร์เรย์.
10: 36Like ในตัวอย่างนี้เมื่อเราอยู่ที่ดัชนี 9
10: 39the ดัชนีต่อไปสำหรับฉันคือดัชนี 0 เราสามารถจินตนาการอาร์เรย์นี้
10: 43something เช่น นี้จำไว้ว่านี้เป็นเพียงทางตรรกะของการมองหาที่
10:. 47array
10: 48An ตีความวงกลมของอาร์เรย์ถ้าฉันชี้ไปที่ตำแหน่งของฉันและปัจจุบัน
10: 52position เป็น
10: 53i แล้วต่อไปตำแหน่งหรือดัชนีต่อไป จะไม่เป็นเพียงฉัน + 1,
10: 58it จะ i + 1 Modulo จำนวน
11: 01elements ในอาร์เรย์หรือขนาดของอาร์เรย์ สมมติว่า
11: 04N คือจำนวนขององค์ประกอบในอาร์เรย์แล้วตำแหน่งต่อไปจะเป็น
11: 08i + 1 Modulo N. การดำเนินงานแบบโมดูโลจะได้รับเรา
11: เหลือ 12the เมื่อหารด้วย N สำหรับ
11: 15any ผมอื่น ๆ กว่าไม่มี - 1. modulo นี้การดำเนินงานจะไม่ได้มีผลกระทบใด ๆ ,
11: 20but สำหรับ i = N - 1 ตำแหน่งต่อไปจะเป็น
11: 25N โมดูล N ซึ่งจะเท่ากับ 0 เมื่อคุณแบ่งจำนวนโดย
11: 29itself,
11: 30the ที่เหลือเป็น 0 ตำแหน่งหน้าที่ในการตีความวงกลม
11: 34array,
11: 35will เป็น I + (N - 1) โมดูโล N.
11: 38We ก็สามารถพูดได้ว่าฉัน-1 แบบโมดูโล N, เพียงเพื่อให้แน่ใจว่าการแสดงออกนี้ภายใน
11: 43the วงเล็บเป็นบวกเสมอ,
11: 45I'm เพิ่ม N ที่นี่ ให้นี้บางคนคิดว่า คุณควรจะสามารถที่จะได้รับเหตุผลที่มันควรจะ
11: 50be
11:50 (i + (N - 1)) โมดูโลเอ็นขณะนี้มีการตีความของอาร์เรย์นี้
11: 54we สามารถ
11: หลัง 55increment ในการดำเนินการจัดลำดับ
11: 58as ยาว ที่มีมือถือที่ไม่ได้ใช้ในอาร์เรย์.
12: 01I'm จะปรับเปลี่ยนฟังก์ชั่นในรหัสหลอกฉันตอนนี้.
12: 04Isempty จะยังคงเหมือนเดิมเรายังคงบอกว่าเป็นคิวที่ว่างเปล่า
12: 09front และด้านหลังจะได้รับ - 1.
12: 11Let ของเลื่อนลงและมา enqueue ตอนนี้ในการตีความวงกลมฉันจะเรียกฉัน
12: 16Queue เต็มเมื่อตำแหน่งที่อยู่ถัดไปทางด้านหลัง
12: ตีความวงกลม 19in ที่เราจะคำนวณเป็น
00:23 (ด้านหลัง + 1) โมดูโล N, จะเท่ากับ
12: 26front ดังนั้น เราจะมีสถานการณ์เช่นนี้ ตอนนี้
12: 30the ตำแหน่งถัดไปทางด้านหลังในการตีความแบบวงกลม
12: 34is ด้านหน้า ดังนั้นจึงไม่มีมือถือที่ไม่ได้ใช้ สมบูรณ์
12: 38array หมด ไม่มีอะไรที่จะมีการเปลี่ยนแปลงในสภาพนี้.
12: 41If คิวว่างเปล่าเราก็สามารถตั้งด้านหน้าและด้านหลังเป็น 0.
12: 45In เงื่อนไขอื่น ๆ ที่ผ่านมาเราจะเพิ่มขึ้นหลัง
12: 49like นี้เราจะกล่าวว่าด้านหลัง = (1 + หลัง ) โมดูโล N
12: 53where N คือจำนวนขององค์ประกอบในอาร์เรย์ กับการเปลี่ยนแปลงมากนี้ฟังก์ชั่น Enqueue ของฉันคือ
12:. 59good
12: 59Now ขอให้เรียกร้องให้ enqueue และใส่บางสิ่งบางอย่าง
13: 02in อาร์เรย์ที่นี่ผมต้องการที่จะใส่หมายเลข 15.
13: 06We จะมาถึงเงื่อนไขอื่น ๆ นี้ที่ผ่านมา ด้านหลังในขณะนี้คือ 9 ดังนั้นนี้
13: 11expression
13: 12will จะ (9 + 1) modular N, N 10 ที่นี่
13: ขนาด 15the ของอาร์เรย์นี้เป็น 10 นี่.
13: 19This จะประเมินถึง 0 ตอนนี้ใหม่ของฉัน ด้านหลัง
13: 22is 0. ฉันจะเขียนหมายเลข 15 ที่นี่.
13: 26Let ตอนนี้เห็นสิ่งที่เราต้องทำในการทำงาน dequeue.
13: 29Nothing จะมีการเปลี่ยนแปลงในเงื่อนไขสองคนแรกถ้าคิวว่างที่มีอยู่แล้ว
13: 34or ถ้ามี เพียงองค์ประกอบหนึ่งในคิวเราจะจัดการกับกรณีเหล่านี้
13: ด้านหน้าลักษณะเดียวกัน 38in ในรอบสุดท้ายอื่นเมื่อเรากำลังที่เพิ่มขึ้น,
13: 43we ต้องเพิ่มขึ้นในลักษณะเป็นวงกลมดังนั้นเราจะบอกว่า
13: 46fornt = (ด้านหน้า + 1 ) โมดูโล N
13: 49where N คือจำนวนขององค์ประกอบในอาร์เรย์จำนวนขององค์ประกอบในอาร์เรย์หรือขนาด
13:. อาร์เรย์ 53of
13: 55Now ขอดำเนินการ dequeue เราจะมาถึงด้านหน้าสภาพนี้ตอนนี้
14: 00is 2 ดังนั้นนี้จะเป็น (2 + 1) โมดูโล 10,
14: 04one มือถืออื่น ๆ สามารถใช้ได้กับเราตอนนี้.
14: 08This มากเป็นหลักของการดำเนินงานของเรา ทำงานด้านหน้าจะเป็น
14: ตรงไปตรงมา 11really เราก็ต้องกลับองค์ประกอบที่ดัชนีด้านหน้า.
14: 16Here ยังอันดับแรกเราต้องตรวจสอบว่าคิวเป็น
14: 19empty หรือไม่เราควรกลับ [ด้านหน้า] เฉพาะเมื่อ
วันที่ 14 : 23front ไม่เท่ากับ -1 การดำเนินงานทั้งหมดเหล่านี้ฟังก์ชั่นเหล่านี้ทั้งหมดที่มี
14: 27written ที่นี่จะใช้เวลาอย่างต่อเนื่อง
14: 29time มีความซับซ้อนจะเป็น O (1) เรากำลังดำเนินการทางคณิตศาสตร์ที่เรียบง่ายและ
14: 34assignments ในฟังก์ชั่นที่
14: 36and ไม่ได้ทำอะไรที่มีราคาแพงเช่นวิ่งวงที่
14:. 40so เวลาถ่ายจะไม่ได้ขึ้นอยู่กับขนาดของคิวหรือตัวแปรอื่น ๆ
14: 44I ออกจากนี้นี่มันควรจะเป็น ไม่ได้เป็นเรื่องยากมากในการแปลงรหัสเทียมนี้
14: 49to
14: โปรแกรม 50running ในภาษาที่คุณเลือกถ้าคุณต้องการที่จะเห็นรหัสของฉัน
14: 54you สามารถตรวจสอบรายละเอียดของวิดีโอนี้สำหรับการเชื่อมโยง ขอบคุณที่รับชม.
การแปล กรุณารอสักครู่..