سلام! اڄ جو ليڪچر باقي ٻين کان ٿورو مختلف هوندو. ان ۾ فرق هوندو ته اهو صرف اڻ سڌي طرح جاوا سان لاڳاپيل آهي. بهرحال، هي موضوع هر پروگرامر لاء تمام ضروري آهي. اسان algorithms بابت ڳالهائينداسين . هڪ الگورتھم ڇا آهي؟ سادي اصطلاحن ۾، اهو عملن جو هڪ خاص سلسلو آهي جيڪو گهربل نتيجو حاصل ڪرڻ لاء انجام ڏنو وڃي . اسان اڪثر روزمره جي زندگي ۾ الگورتھم استعمال ڪندا آهيون. مثال طور، هر صبح توهان کي هڪ ڪم سان منهن ڏيڻو پوي ٿو: اسڪول يا ڪم تي اچڻ، ۽ ساڳئي وقت:
- ڪپڙو
- صاف
- چڱي طرح کاڌو
- هڪ الارم ڪلاڪ تائين جاڳيو.
- شاور وٺو، پنهنجو منهن ڌوء.
- ناشتو تيار ڪريو، ڪافي / چانهه ٺاهيو.
- کائو.
- جيڪڏهن توهان شام کان پنهنجا ڪپڙا استري نه ڪيا آهن، انهن کي استري ڪريو.
- ڪپڙا پايو.
- گهر ڇڏي وڃ.
- خريد ڪريو يا انٽرنيٽ تي ڊائون لوڊ ڪريو "روسي ذاتي نالن جي ڊڪشنري" 1966 ايڊيشن.
- هن لغت ۾ اسان جي لسٽ تي هر نالو ڳوليو.
- ڪاغذ جي هڪ ٽڪري تي لکو ته لغت جي ڪهڙي صفحي تي نالو آهي.
- ڪاغذ جي هڪ ٽڪري تي نوٽس استعمال ڪندي نالن کي ترتيب ڏيو.
for
جيڪو هن ڪم کي انجام ڏئي ٿو
int[] numbers = new int[100];
// ..заполняем массив числами
for (int i: numbers) {
System.out.println(i);
}
لکيل الگورتھم جي پيچيدگي ڇا آهي؟ لڪير، O (N). عملن جو تعداد جيڪو پروگرام کي انجام ڏيڻ لازمي آھي ان تي منحصر آھي ته ان ۾ ڪيترا نمبر گذري ويا آھن. جيڪڏهن صف ۾ 100 نمبر آهن، اتي 100 عمل (اسڪرين تي آئوٽ پُٽ) هوندا. جيڪڏهن صف ۾ 10,000 انگ آهن، 10,000 عملن کي انجام ڏيڻ جي ضرورت پوندي. ڇا اسان جي الگورتھم کي بهتر بڻائي سگھجي ٿو؟ نه. ڪنهن به صورت ۾، اسان کي ٺاهڻو پوندو N پاسن کي صف ذريعي ۽ انجام ڏيڻو پوندو N آئوٽ ڪنسول ڏانهن. اچو ته هڪ ٻيو مثال ڏسو.
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(0, 20202);
numbers.add(0, 123);
numbers.add(0, 8283);
}
اسان وٽ ھڪڙو خالي آھي LinkedList
جنھن ۾ اسين ڪيترائي نمبر داخل ڪندا آھيون. اسان کي اسان جي مثال ۾ هڪ واحد نمبر داخل ڪرڻ لاء الگورتھم جي پيچيدگي جو اندازو لڳائڻ جي ضرورت آهي LinkedList
، ۽ اهو فهرست ۾ عناصر جي تعداد تي ڪيئن منحصر آهي. جواب آهي O (1) - مسلسل پيچيدگي . ڇو؟ مهرباني ڪري نوٽ ڪريو: هر ڀيري اسان لسٽ جي شروعات ۾ نمبر داخل ڪندا آهيون. اضافي طور تي، جيئن توهان کي ياد آهي، جڏهن انگن کي عناصر ۾ داخل ڪيو وڃي ، اهي ڪٿي به منتقل نه ڪيا ويا آهن - لنڪس ٻيهر بيان ڪيا ويا آهن (جيڪڏهن توهان اوچتو وساري ڇڏيو ته LinkedList ڪيئن ڪم ڪري ٿو، اسان جي پراڻي ليڪچرنLinkedList
مان هڪ تي هڪ نظر وٺو ). جيڪڏهن هاڻي اسان جي لسٽ ۾ پهريون نمبر نمبر آهي ، ۽ اسان لسٽ جي شروعات ۾ نمبر y داخل ڪندا آهيون، اهو سڀ ڪجهه گهربل آهي: х
x.previous = y;
y.previous = null;
y.next = x;
هن ريفرنس جي ٻيهر تعريف لاءِ، اهو اسان لاءِ اهميت نٿو رکي ته هاڻي ڪيترا نمبر آهنLinkedList
- گهٽ ۾ گهٽ هڪ، گهٽ ۾ گهٽ هڪ ارب. الورورٿم جي پيچيدگي مستقل هوندي - O(1).
GO TO FULL VERSION