ہیلو! آج کا لیکچر باقیوں سے تھوڑا مختلف ہوگا۔ اس میں فرق ہوگا کہ یہ صرف بالواسطہ طور پر جاوا سے متعلق ہے۔ تاہم یہ موضوع ہر پروگرامر کے لیے بہت اہم ہے۔ ہم الگورتھم کے بارے میں بات کریں گے ۔ الگورتھم کیا ہے؟ سادہ الفاظ میں، یہ اعمال کا ایک خاص سلسلہ ہے جو مطلوبہ نتیجہ حاصل کرنے کے لیے انجام دینا ضروری ہے ۔ ہم اکثر روزمرہ کی زندگی میں الگورتھم استعمال کرتے ہیں۔ مثال کے طور پر، ہر صبح آپ کو ایک کام کا سامنا کرنا پڑتا ہے: اسکول یا کام پر آنا، اور اسی وقت:
- ملبوس
- صاف
- اچھی طرح کھلایا
- الارم گھڑی تک جاگیں۔
- شاور لیں، اپنا چہرہ دھو لیں۔
- ناشتہ تیار کریں، کافی/چائے بنائیں۔
- کھاؤ۔
- اگر آپ نے شام سے اپنے کپڑے استری نہیں کیے ہیں تو انہیں استری کر لیں۔
- تیار ہو جاؤ.
- مکان چھوڑ دو.
- انٹرنیٹ پر "روسی ذاتی ناموں کی ڈکشنری" 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