ہائے! آج کا سبق باقیوں سے قدرے مختلف ہوگا۔ اس میں فرق ہوگا کہ یہ صرف بالواسطہ طور پر جاوا سے متعلق ہے۔ اس نے کہا، یہ موضوع ہر پروگرامر کے لیے بہت اہم ہے۔ ہم الگورتھم کے بارے میں بات کرنے جا رہے ہیں ۔ الگورتھم کیا ہے؟ سادہ الفاظ میں، یہ اعمال کا کچھ سلسلہ ہے جو مطلوبہ نتیجہ حاصل کرنے کے لیے مکمل ہونا ضروری ہے ۔ ہم روزمرہ کی زندگی میں اکثر الگورتھم استعمال کرتے ہیں۔ مثال کے طور پر، ہر صبح آپ کا ایک مخصوص کام ہوتا ہے: اسکول یا کام پر، اور ساتھ ہی یہ بھی ہو:
- کپڑا
- صاف
- کھلایا
- الارم گھڑی کا استعمال کرتے ہوئے اٹھیں۔
- شاور لیں اور اپنے آپ کو دھو لیں۔
- ناشتہ اور کافی یا چائے بنائیں۔
- کھاؤ۔
- اگر آپ نے پچھلی شام اپنے کپڑے استری نہیں کیے تو انہیں استری کریں۔
- تیار ہو جاؤ.
- مکان چھوڑ دو.
- ویبسٹر کی تیسری نئی بین الاقوامی لغت کا 1961 ایڈیشن خریدیں یا ڈاؤن لوڈ کریں۔
- اس لغت میں ہماری فہرست سے ہر نام تلاش کریں۔
- کاغذ کے ٹکڑے پر لغت کا صفحہ لکھیں جس پر نام موجود ہے۔
- ناموں کو ترتیب دینے کے لیے کاغذ کے ٹکڑوں کا استعمال کریں۔
for
لوپ لکھتے ہیں جو اس کام کو انجام دیتا ہے۔
int[] numbers = new int[100];
// ...fill the array with numbers
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) یعنی مستقل پیچیدگی ۔ کیوں؟ نوٹ کریں کہ ہم فہرست کے شروع میں ہر نمبر داخل کرتے ہیں۔ اس کے علاوہ، آپ کو یاد ہوگا کہ جب آپ ایک نمبر کو a میں داخل کرتے ہیں LinkedList
، تو عناصر کہیں بھی منتقل نہیں ہوتے ہیں۔ لنکس (یا حوالہ جات) کو اپ ڈیٹ کر دیا جاتا ہے (اگر آپ بھول گئے ہیں کہ LinkedList کیسے کام کرتی ہے، تو ہمارے پرانے اسباق
میں سے ایک کو دیکھیں )۔ اگر ہماری فہرست میں پہلا نمبر ہے x
، اور ہم فہرست کے آگے نمبر y ڈالتے ہیں، تو ہمیں بس اتنا کرنے کی ضرورت ہے:
x.previous = y;
y.previous = null;
y.next = x;
جب ہم لنکس کو اپ ڈیٹ کرتے ہیں، تو ہمیں اس بات کی پرواہ نہیں ہوتی کہ پہلے سے ہی کتنے نمبر ہیںLinkedList
، چاہے ایک یا ایک ارب۔ الگورتھم کی پیچیدگی مستقل ہے، یعنی O(1)۔
GO TO FULL VERSION