Ab tak har variable ke andar ek hi value rahi hai. Lekin agar aapko chaalees students ke marks rakhne hon, toh chaalees variables banayenge? m1, m2, m3… sochiye kitna bura ho jaayega. Array isi ka jawaab hai: ek hi naam ke neeche, ek hi type ki kai values, aur har value ka ek number — uska index. Yeh Unit 7 hai, aur syllabus ismein kaafi kuch maangta hai: single aur double dimensional arrays, unmein data bharna, linear aur binary search, aur selection aur bubble sort. Search aur sort sirf single dimensional array par karne hote hain.
- What an Array Is, and the Index Rule
- Declaring, Initialising and Traversing
- Default Values and the Out-of-Bounds Error
- Finding the Largest and Smallest
- Linear Search
- Binary Search
- Bubble Sort
- Selection Sort
- Double Dimensional Arrays
- Dry-Run Bank — Output Questions
- How This Chapter Is Examined
- Practice Worksheet (10 Questions)
What an Array Is, and the Index Rule
An array is a collection of elements of the same data type, stored under one name, where each element is reached by its index. Syllabus ise composite type kehta hai — wahi baat jo aapne Library Classes chapter mein padhi thi.
n elements wale array ke indexes 0 se n-1 tak hote hain. Aakhri element hamesha a[a.length - 1] hota hai. Yeh ek line is poore chapter ki aadhi galtiyaan bacha deti hai.Aur ek zaroori shabd: length. Array ki size jaanne ke liye a.length likha jaata hai — bina brackets ke. Yeh String wali length() se alag hai, jismein brackets lagte hain. Yeh fark aage String chapter mein phir dikhega.
Declaring, Initialising and Traversing
Array banane ke do tareeke hain. Agar values pehle se pata hain toh seedhe likh dijiye; agar nahi, toh new se khaali jagah bana lijiye.
int marks[] = {58, 72, 45, 90, 66}; // values known now
int marks[] = new int[5]; // 5 khaali khaane, baad mein bharenge
class A1
{
public static void main(String args[])
{
int marks[] = {58, 72, 45, 90, 66};
System.out.println("Size of array = " + marks.length);
System.out.println("First element = " + marks[0]);
System.out.println("Last element = " + marks[marks.length - 1]);
int sum = 0;
for (int i = 0; i < marks.length; i++)
{
System.out.println("marks[" + i + "] = " + marks[i]);
sum = sum + marks[i];
}
System.out.println("Sum = " + sum);
System.out.println("Average = " + (double) sum / marks.length);
}
}
Output
Size of array = 5 First element = 58 Last element = 66 marks[0] = 58 marks[1] = 72 marks[2] = 45 marks[3] = 90 marks[4] = 66 Sum = 331 Average = 66.2
Do cheezein pakadiye. Pehli, loop i < marks.length tak chala — <= nahi, warna woh index 5 maangta jo hai hi nahi. Doosri, average nikaalte waqt (double) cast lagaya gaya. Bina uske 331 / 5 ek integer division hota aur jawaab 66 aata, 66.2 nahi.
i <= a.length likh dena. Yeh ek extra chakkar lagayega aur program chalte-chalte gir jaayega — ArrayIndexOutOfBoundsException. Yeh compile-time error nahi hai, isliye pakadti tabhi hai jab program chalta hai. Hamesha < likhiye.Default Values and the Out-of-Bounds Error
Jab aap new se array banate hain, toh Java har khaane ko us type ki default value se bhar deta hai — bilkul waise hi jaise data members ko milti hai.
class DA3
{
public static void main(String args[])
{
int a[] = new int[5];
String s[] = new String[3];
double d[] = new double[2];
System.out.println(a[0] + " " + a[4]);
System.out.println(s[0]);
System.out.println(d[1]);
}
}
Output
0 0 null 0.0
Ab dekhiye jab index galat ho:
class DA2
{
public static void main(String args[])
{
int a[] = {3, 6, 9};
System.out.println(a[3]);
}
}
Runtime output
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at DA2.main(DA2.java:6)
Array mein teen element hain, isliye valid indexes sirf 0, 1 aur 2 hain. a[3] maangte hi program ruk gaya. Dhyaan dijiye ki yeh compile hua tha — galti chalne par pakdi gayi. Isiliye index ka hisaab har baar dhyaan se karna padta hai.
Finding the Largest and Smallest
Yeh pattern har saal kisi na kisi roop mein aata hai. Tarkeeb yeh hai: pehle element ko hi “abhi tak ka sabse bada” maan lijiye, phir baaki sab se tulna kijiye.
class A2
{
public static void main(String args[])
{
int a[] = {45, 12, 78, 33, 90, 21};
int max = a[0], min = a[0];
for (int i = 1; i < a.length; i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
System.out.println("Largest = " + max);
System.out.println("Smallest = " + min);
}
}
Output
Largest = 90 Smallest = 12
Loop i = 1 se shuru hua, 0 se nahi — kyunki index 0 ko toh humne pehle hi max aur min bana diya tha.
max = 0; se shuruaat karna. Agar saare numbers rinaatmak (negative) hue — jaise -5, -12, -3 — toh jawaab galat 0 aa jaayega, kyunki koi bhi element 0 se bada nahi hai. Hamesha max = a[0]; se shuru kijiye.Linear Search
Sabse seedha tareeka: shuru se aakhir tak har element dekhiye, aur jo chahiye woh mil jaaye toh ruk jaiye. Iski sabse badi khoobi yeh hai ki array ka sorted hona zaroori nahi.
class A3
{
public static void main(String args[])
{
int a[] = {14, 27, 33, 48, 55, 61};
int key = 48;
int pos = -1;
for (int i = 0; i < a.length; i++)
{
if (a[i] == key)
{
pos = i;
break;
}
}
if (pos == -1)
System.out.println(key + " not found");
else
System.out.println(key + " found at index " + pos);
}
}
Output
48 found at index 3
pos ko -1 se shuru karna ek chalan hai — kyunki koi bhi valid index rinaatmak nahi hota, isliye -1 ka matlab saaf hai: “abhi tak mila nahi”. Loop ke baad usi se pata chal jaata hai ki search safal rahi ya nahi.
Binary Search
Agar array pehle se sorted ho, toh bahut tez tareeka hai. Beech ka element dekhiye. Agar wahi chahiye tha, kaam khatam. Agar chhota hai toh sirf daayin aadhi mein dhoondhiye, bada hai toh baayin aadhi mein. Har kadam par aadha array khatam.
class A4
{
public static void main(String args[])
{
int a[] = {14, 27, 33, 48, 55, 61};
int key = 55;
int low = 0, high = a.length - 1, pos = -1;
while (low <= high)
{
int mid = (low + high) / 2;
if (a[mid] == key)
{
pos = mid;
break;
}
else if (a[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
if (pos == -1)
System.out.println(key + " not found");
else
System.out.println(key + " found at index " + pos);
}
}
Output
55 found at index 4
Dry run kar ke dekhiye: low=0, high=5, mid=2 → a[2]=33, 55 se chhota, isliye low=3. Ab mid=4 → a[4]=55 — mil gaya. Do hi kadam mein. Linear search ko paanch kadam lagte.
Bubble Sort
Bubble sort mein paas-paas ke do elements ki tulna hoti hai, aur galat kram mein hon toh badal diye jaate hain. Har poore chakkar ke baad sabse bada element apni sahi jagah — ekdum aakhir mein — pahunch jaata hai, jaise bulbula upar aa jaata ho.
class A5
{
public static void main(String args[])
{
int a[] = {45, 12, 78, 33, 90};
for (int i = 0; i < a.length - 1; i++)
{
for (int j = 0; j < a.length - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
System.out.print("After pass " + (i + 1) + " : ");
for (int k = 0; k < a.length; k++)
System.out.print(a[k] + " ");
System.out.println();
}
}
}
Output
After pass 1 : 12 45 33 78 90 After pass 2 : 12 33 45 78 90 After pass 3 : 12 33 45 78 90 After pass 4 : 12 33 45 78 90
Pass 1 ke baad 90 aakhir mein pahunch gaya. Pass 2 ke baad array pehle hi sorted ho chuka hai, lekin loop apne poore chaar chakkar lagata hai — isliye pass 3 aur 4 mein koi badlaav nahi dikhta. Exam mein aksar “show the array after each pass” poochha jaata hai, isliye is output ko dhyaan se dekhiye. Swap ke liye teesra variable t chahiye hi chahiye.
Selection Sort
Selection sort ka soch alag hai. Har chakkar mein bache hue hisse ka sabse chhota element dhoondhiye, aur use aage laakar rakh dijiye. Bubble sort baar-baar badalta hai; selection sort ek chakkar mein sirf ek baar badalta hai.
class A6
{
public static void main(String args[])
{
int a[] = {45, 12, 78, 33, 90};
for (int i = 0; i < a.length - 1; i++)
{
int minPos = i;
for (int j = i + 1; j < a.length; j++)
{
if (a[j] < a[minPos])
minPos = j;
}
int t = a[i];
a[i] = a[minPos];
a[minPos] = t;
System.out.print("After pass " + (i + 1) + " : ");
for (int k = 0; k < a.length; k++)
System.out.print(a[k] + " ");
System.out.println();
}
}
}
Output
After pass 1 : 12 45 78 33 90 After pass 2 : 12 33 78 45 90 After pass 3 : 12 33 45 78 90 After pass 4 : 12 33 45 78 90
Ab dono outputs ki tulna kijiye. Wahi array, wahi antim jawaab — lekin beech ke passes bilkul alag hain. Bubble sort ne pass 1 mein sabse bada (90) aakhir mein bheja; selection sort ne pass 1 mein sabse chhota (12) shuru mein laaya. Exam mein agar “show each pass” poochha jaaye aur aap galat tareeka likh dein, toh antim jawaab sahi hone par bhi marks kat jaate hain.
| Bubble sort | Selection sort |
|---|---|
| Paas-paas ke do elements ki tulna karta hai. | Bache hue hisse mein sabse chhota dhoondhta hai. |
| Ek pass mein kai swaps ho sakte hain. | Ek pass mein zyada se zyada ek swap. |
| Har pass ke baad sabse bada element aakhir mein jama hota hai. | Har pass ke baad sabse chhota element shuru mein jama hota hai. |
Double Dimensional Arrays
Syllabus double dimensional array bhi maangta hai — yaani ek table, jismein rows aur columns hote hain. Ise m[i][j] likha jaata hai, jahan i row hai aur j column. Dhyaan rahe: search aur sort sirf single dimensional array par karne hote hain; double dimensional mein rows, columns aur diagonals ka jod poochha jaata hai.
class A7
{
public static void main(String args[])
{
int m[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int rowSum = 0, colSum = 0, leftDiag = 0, rightDiag = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
System.out.print(m[i][j] + "\t");
System.out.println();
}
for (int j = 0; j < 3; j++)
{
rowSum = rowSum + m[1][j];
colSum = colSum + m[j][2];
}
for (int i = 0; i < 3; i++)
{
leftDiag = leftDiag + m[i][i];
rightDiag = rightDiag + m[i][2 - i];
}
System.out.println("Sum of row 1 = " + rowSum);
System.out.println("Sum of column 2 = " + colSum);
System.out.println("Left diagonal sum = " + leftDiag);
System.out.println("Right diagonal sum = " + rightDiag);
}
}
Output
1 2 3 4 5 6 7 8 9 Sum of row 1 = 15 Sum of column 2 = 18 Left diagonal sum = 15 Right diagonal sum = 15
Teen formule yaad rakh lijiye, poore marks inhi par milte hain. Matrix chhaapne ke liye do loops (bahar row, andar column) aur har row ke baad ek println(). Left diagonal woh hai jahan row aur column barabar hon — m[i][i]. Right diagonal woh hai jahan dono ka jod aakhri index ke barabar ho — m[i][2-i], yaani 3×3 ke liye 1+5+9 aur 3+5+7, dono 15.
Dry-Run Bank — Output Questions
class DA1
{
public static void main(String args[])
{
int a[] = {5, 10, 15, 20, 25};
System.out.println(a.length);
System.out.println(a[2] + a[4]);
System.out.println(a[a.length - 2]);
a[1] = a[1] + a[0];
System.out.println(a[1]);
}
}
Show Answer
5 40 20 15
a.length 5 hai (elements ki ginti, aakhri index nahi). a[2] + a[4] = 15 + 25 = 40. a[a.length - 2] = a[3] = 20. Aur aakhir mein a[1] = 10 + 5 = 15.
class QA1
{
public static void main(String args[])
{
int a[] = {8, 3, 11, 6, 2};
int sum = 0;
for (int i = 0; i < a.length; i++)
{
if (a[i] % 2 == 0)
sum = sum + a[i];
}
System.out.println("Sum of even elements = " + sum);
}
}
Show Answer
Sum of even elements = 16
Sam sankhyaayein hain 8, 6 aur 2 → 16. Visham 3 aur 11 chhod diye gaye.
class QA2
{
public static void main(String args[])
{
int a[] = {10, 20, 30, 40, 50};
for (int i = a.length - 1; i >= 0; i--)
System.out.print(a[i] + " ");
System.out.println();
}
}
Show Answer
50 40 30 20 10
Ulta chhaapne ke liye loop a.length - 1 se shuru hota hai aur i >= 0 tak i-- karta hai. Yahan >= sahi hai, kyunki index 0 bhi chhapna chahiye.
How This Chapter Is Examined
CISCE ke Class X syllabus ke anusaar Computer Applications (86) mein ek written paper, do ghante ka, 100 marks hota hai, aur uske alaawa Internal Assessment bhi 100 marks ka, jo poori tarah practical hai aur jismein saal bhar mein kam se kam 20 lab assignments karne hote hain. Question paper mein 100 marks do hisson mein bante hain: Section A — 40 marks, jismein saare sawaal karne hote hain, aur Section B — 60 marks, jismein chhe sawaalon mein se koi chaar karne hote hain. Section A khud do sawaalon ka banta hai: Question 1 20 marks ke MCQs, aur Question 2 20 marks ke chhote sawaal — das hisse, har ek 2 marks ka.
Arrays is paper ka sabse bhaari chapter hai. Section B ke 15-marks wale sawaalon mein arrays lagbhag hamesha aate hain — ek array lijiye, usmein data bhariye, phir search ya sort kijiye. Section A mein index ka hisaab aur chhote output questions aate hain. Agar aapko sirf ek chapter par mehnat karni ho, toh yahi hai.
Practice Worksheet (10 Questions)
Show Answer
An array is a collection of elements of the same data type stored under a single name, where each element is accessed by its index. It is a composite (or reference) data type because a single name groups many values together rather than holding one value, and because it is an object — which is why length can be reached through it with the dot operator.
Show Answer
Linear search checks each element one by one from the beginning until the value is found or the array ends; it works on any array, sorted or not. Binary search repeatedly examines the middle element and discards half the array each time, so it is much faster on large arrays. The condition binary search requires is that the array must already be sorted; on an unsorted array it silently gives wrong results.
class WA1
{
public static void main(String args[])
{
int a[] = {7, 2, 9, 4};
int t = a[0];
a[0] = a[3];
a[3] = t;
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
System.out.println(a[0] + a[3]);
}
}
Show Answer
4 2 9 7 11
Pehla aur aakhri element aapas mein badal gaye. Aakhri line mein dono int hain, isliye 4 + 7 = 11 — jud kar 47 nahi bana.
class WA2
{
public static void main(String args[])
{
int a[] = {12, 25, 8, 40, 17};
int c = 0;
for (int i = 0; i < a.length; i++)
if (a[i] > 15)
c++;
System.out.println("Count = " + c);
}
}
Show Answer
Count = 3
15 se bade hain 25, 40 aur 17 → 3.
{45, 12, 78, 33, 90} after each pass of a bubble sort in ascending order.
Show Answer
After pass 1 : 12 45 33 78 90 After pass 2 : 12 33 45 78 90 After pass 3 : 12 33 45 78 90 After pass 4 : 12 33 45 78 90
Pass 1 ke baad sabse bada (90) aakhir mein pahunch gaya. Array pass 2 ke baad hi sort ho gaya, lekin loop apne poore n-1 = 4 passes chalata hai.
{45, 12, 78, 33, 90} after each pass of a selection sort, and state how the passes differ from bubble sort.
Show Answer
After pass 1 : 12 45 78 33 90 After pass 2 : 12 33 78 45 90 After pass 3 : 12 33 45 78 90 After pass 4 : 12 33 45 78 90
Selection sort har pass mein bache hue hisse ka sabse chhota element uthaa kar aage rakhta hai, isliye array shuruaat se sort hota hai. Bubble sort paas-paas ke jode badalta hai, isliye uska sabse bada element aakhir mein jama hota hai. Antim jawaab dono ka ek hi hai, lekin beech ke passes alag hain.
class DA2
{
public static void main(String args[])
{
int a[] = {3, 6, 9};
System.out.println(a[3]);
}
}
Show Answer
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at DA2.main(DA2.java:6)
Array mein 3 elements hain, toh valid indexes 0, 1 aur 2 hi hain. a[3] maujood nahi, isliye Java ne ArrayIndexOutOfBoundsException phenk diya. Yeh runtime error hai — program compile ho gaya tha, chalte waqt ruka.
class WA3
{
public static void main(String args[])
{
int m[][] = {{2, 4}, {6, 8}};
int s = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
s = s + m[i][j];
System.out.println("Total = " + s);
System.out.println("m[1][0] = " + m[1][0]);
}
}
Show Answer
Total = 20 m[1][0] = 6
Saare elements ka jod 2+4+6+8 = 20. m[1][0] ka matlab hai doosri row ka pehla element — yaani 6. Pehla index row hai, doosra column.
m, write the expression that adds the left diagonal and the one that adds the right diagonal.
Show Answer
Left diagonal: inside a loop for (int i = 0; i < 3; i++) write leftDiag = leftDiag + m[i][i]; — the row and column indexes are equal. Right diagonal: in the same loop write rightDiag = rightDiag + m[i][2 - i]; — the two indexes always add up to the last index. For the matrix 1..9 both diagonals total 15.
for (int i = 0; i <= a.length; i++). What is wrong, when will the problem appear, and what is the fix?
Show Answer
The condition allows i to reach a.length, but the last valid index is a.length - 1, so the loop makes one extra turn and tries to read an element that does not exist. The program compiles without complaint; the failure appears only when it runs, as an ArrayIndexOutOfBoundsException. The fix is to write i < a.length.
Aage kya? Array ne ek hi type ki kai values sambhaalna sikha diya. Agla padav hai String handling — jahan aap dekhenge ki ek String bhi asal mein characters ka silsila hai, aur uske apne kai kaam ke methods hain. Peeche jaana ho toh Encapsulation aur Library Classes dobara padh lijiye.
Kaizen: Aaj se roz ek chhota array kaagaz par likhiye — sirf paanch numbers — aur uspar ek pass bubble sort ka aur ek pass selection sort ka haath se chalaiye. Har swap ke baad poori line dobara likhiye. Ek hafte mein aap dono techniques ka fark bina soche bata denge, aur “show each pass” wala sawaal aapke liye sabse aasan ho jaayega.
