อาร์เรย์ (Array)
-
Upload
kaseem-richard -
Category
Documents
-
view
18 -
download
0
description
Transcript of อาร์เรย์ (Array)
อาร์�เร์ย์� (Array)
บทท�� 1
อาร์�เร์ย์�
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�5
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�2
กุาร์คั�นหาข้�อมิ�ลในอาร์�เร์ย์�3
กุาร์จั�ดเร์!ย์งข้�อมิ�ลในอาร์�เร์ย์� (Sort)4
2
กุาร์ใช�พิ"#นที่!%ในหน&วย์คัวามิจั(าร์&วมิกุ�นข้องอาร์�เร์ย์�
1
กุาร์ใช�อาร์�เร์ย์�สองมิ�ต�ที่!%แต&ละแถวมิ!ข้�อมิ�ลไมิ&เที่&ากุ�น
6
อาร์�เร์ย์�
เช่�นint[] students;double[] amounts;char[] letters;หรื�อint students[];double amounts[];char letters[];
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล3
ชน�ดข้องต�วแปร์อาร์�เร์ย์�[] ช"%อข้องต�วแปร์;
ชน�ดข้องต�วแปร์อาร์�เร์ย์�[] ช"%อข้องต�วแปร์;
อาร์�เร์ย์�
การืจองพื้��นท��ในหน�วยความจ�าสามารืถท�าได้�ด้�งน��int[] students = new int[5];
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล4
ด้�ช่น�ของอารื เรืย stu
ใช่� ค�าส� �ง new ในการืจองพื้��นท��ท�� ช่น"ด้ int จ�านวน
5 ตั�ว
stu[0]
stu [3]
stu [4]
stu [1]
stu [2]
int [] stu = new int[5];
ปรืะกาศอารื เรืย ใช่�เก'บเลขจ�านวนเตั'ม
ช่��อของ อารื เรืย
ช่น"ด้ของข�อม)ลท��เก'บได้�
stu.length จะม�ค�าเท�าก�บ 5
0 0 0 0 0
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
class array1 { public static void main (String[] args)
{ int[] stu = new int[5]; for (int i=0; i<stu.length; i++) { System.out.printf("stu[%d]
= %d%n",i,stu[i]); } }}
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล5
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อstu[ 0 0] =stu[ 1 0] =stu[ 2 0] =stu[ 3 0] =stu[ 4 0] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล6
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
class array2 { public static void main (String[] args) { int[] stu = new int[7]; stu[1] = 5; stu[3] = 7; stu[6] = 6; for (int i=0; i<stu.length; i++) { System.out.printf("stu[%d] = %d
%n",i,stu[i]); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล7
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อstu[ 0 0] =stu[ 515
stu[ 2 0] =stu[ 537
stu[ 4 0] =stu[ 5 0] =stu[ 6 6] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล8
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
class array3 { public static void main (String[] args) { int[] arr = {8,9,6,3}; for (int i=0; i<arr.length; i++) { System.out.printf("arr[%d] =
%d%n",i,arr[i]); } }}
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล9
กุาร์กุ(าหนดคั&าเร์�%มิต�นให�กุ�บอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�เป-นด้�งน��arr[ 508
arr[ 519
arr[ 2 6] =arr[ 3 3] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล10
กุาร์ร์�บข้�อมิ�ลเข้�าที่างคั!ย์�บอร์�ดเพิ"%อเกุ.บคั&าไว�ในอาร์�เร์ย์�
import java.util.Scanner; class array4 { public static void main (String[] args) { Scanner input = new Scanner(System.in); int[] arr; int num,sum=0 ; double average = 00. ; System.out.print("How many number do you
want:"); num = input.nextInt(); arr = new int[num];
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล11
กุาร์ร์�บข้�อมิ�ลเข้�าที่างคั!ย์�บอร์�ดเพิ"%อเกุ.บคั&าไว�ในอาร์�เร์ย์�
for (int i=0 ; i<arr.length; i++) { System.out.printf("input arr[%d] :",i); arr[i] = input.nextInt(); sum += arr[i]; } average = sum/arr.length; System.out.printf("Sum is %d%n",sum); System.out.printf("Average is %.2 f%n",average); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล12
กุาร์ร์�บข้�อมิ�ลเข้�าที่างคั!ย์�บอร์�ดเพิ"%อเกุ.บคั&าไว�ในอาร์�เร์ย์�
เม��อรื�นโปรืแกรืมแล�วทด้ลองก�าหนด้ขนาด้ของอารื เรืย เป-น 4 แล�วใส�ตั�วเลข 9 8 6 3 ผลล�พื้ธ์ ท��ได้�เป-นด้�งน��
How many number do you want:4input arr[ 09input arr[ 1 8] :input arr[ 2 6] :input arr[ 3 3] :Sum is 26Average is 600
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล13
กุาร์ใช�พิ"#นที่!%ในหน&วย์คัวามิจั(าร์&วมิกุ�นข้องอาร์�เร์ย์�
class array5 { public static void main (String[] args) { int[] arr = {8,9,6,3}; System.out.println("*** Before ***"); for (int i=0; i<arr.length; i++) { System.out.printf("arr[%d] = %d
%n",i,arr[i]); }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล14
กุาร์ใช�พิ"#นที่!%ในหน&วย์คัวามิจั(าร์&วมิกุ�นข้องอาร์�เร์ย์�
int[] newArr = arr; newArr[1] = 4; newArr[3] = 2; System.out.println("*** After ***"); for (int i=0; i<arr.length; i++) { System.out.printf("arr[%d] = %d
%n",i,arr[i]); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล15
กุาร์ใช�พิ"#นที่!%ในหน&วย์คัวามิจั(าร์&วมิกุ�นข้องอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อ *** Before *** arr[ 0 8] = arr[ 1] = 9 arr[ 2] = 6 arr[ 3 3] = *** After *** arr[ 0 8] = arr[ 514
arr[ 2] = 6 arr[ 3 2] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล16
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ท�าได้�สามว"ธ์� ว"ธ์�แรืกเรืาตั�องท�าการืสรื�างอารื เรืย อ�กช่0ด้หน1�งแล�วท�าการืค�ด้ลอกข�อม)ลจากอารื เรืย ตั�วเด้"มมาไว�ในอารื เรืย
ตั�วใหม�ท�ละข�อม)ล ๆ ไปเรื��อย ๆ จนข�อม)ลหมด้ ท�าได้�ด้�งตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล17
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
class array6 { public static void main (String[] args) { int[] arr = {8,9,6,3}; int[]newArr = new int[arr.length]; for (int i=0; i<arr.length; i++) { System.out.printf("arr[%d] = %d
%n",i,arr[i]); }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล18
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
for (int i=0; i<arr.length; i++) { newArr[i] = arr[i]; } for (int i=0; i<newArr.length; i++) { System.out.printf("newArr[%d] =
%d%n",i,newArr[i]); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล19
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อarr[ 508
arr[ 519
arr[ 2 6] =arr[ 3 3] =newArr[ 0 8] =newArr[ 1 9] =newArr[ 2 6] =newArr[ 3 3] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล20
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ว"ธ์�ท��สองตั�องใช่�เมด้ธ์อด้ (Method) arraycopy() ท�าการืค�ด้ลอกข�อม)ลจากอารื เรืย ตั�นทางไปย�งอารื เรืย ปลาย
ทาง ด้�งตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล21
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
class array7 { public static void main(String[] args) { int[] arr = {8,9,6,3}; int[] newArr = new int[arr.length]; System.arraycopy(arr, 0, newArr, 0,
arr.length); for(int i = 0; i < newArr.length; i++) System.out.printf("newArr[%d] = %d
%n",i,newArr[i]); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล22
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อnewArr[ 0 8] =newArr[ 1 9] =newArr[ 2 6] =newArr[ 3 3] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล23
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
จากบรืรืท�ด้ System.arraycopy(arr, 0, newArr, 0, arr.length); ภายในวงเล'บม�ตั�วแปรื 5 ตั�ว โด้ยม�เง��อนไขด้�งน��
ตั�วแปรืตั�วแรืกเป-นอารื เรืย ตั�นทางท��ตั�องการืค�ด้ลอก(arr)
ตั�วแปรืตั�วท��สองเป-นด้�ช่น�เรื"�มตั�นของอารื เรืย ตั�นทาง(0)
ตั�วแปรืตั�วท��สามเป-นอารื เรืย ปลายทางท��ตั�องการืสรื�าง(newArr)
ตั�วแปรืตั�วท��ส��เป-นด้�ช่น�เรื"�มตั�นของอารื เรืย ปลายทาง(0)
ตั�วแปรืตั�วท��ห�าเป-นขนาด้ของข�อม)ลท��ตั�องการืค�ด้ลอก(arr.length)
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล24
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ค�ด้ลอกข�อม)ลโด้ยใข�ค�าส��ง System.arraycopy() สามารืถค�ด้ลอกข�อม)ลบางส�วนได้� ไม�จ�าเป-นตั�องค�ด้ลอก
ข�อม)ลท��งหมด้ แสด้งได้�ด้�งตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล25
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
class array8 { public static void main(String[] args) { int[] arr = {8,9,6,3}; int[] newArr = new int[arr.length-1]; System.arraycopy(arr, 1, newArr, 0,
arr.length - 2); for(int i=0;i<newArr.length;i++) System.out.printf("newArr[%d] =
%d%n",i, newArr[i]); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล26
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อnewArr[ 0 9] =newArr[ 1 6] =newArr[ 2 0] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล27
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ว"ธ์�ท��สามใช่�เมด้ธ์อด้ clone() ซึ่1�งเป-นการืค�ด้ลอกข�อม)ล จากอารื เรืย ตั�นทางไปย�งปลายทางเช่�นก�น พื้"จารืณา
ตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล28
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
class array9 { public static void main(String[] args) { int[] arr = {8,9,6,3}; int[] newArr = (int[])arr.clone(); for(int i=0;i<newArr.length;i++)
System.out.printf("newArr[%d] = %d%n",i, newArr[i]);
} }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล29
กุาร์คั�ดลอกุข้�อมิ�ลในอาร์�เร์ย์�
ผลล�พื้ธ์ ท��ได้�ค�อnewArr[ 0 8] =newArr[ 1 9] =newArr[ 2 6] =newArr[ 3 3] =
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล30
กุาร์คั�นหาข้�อมิ�ลในอาร์�เร์ย์�
การืค�นหาข�อม)ลในอารื เรืย สามารืถท�าได้� 2 ว"ธ์� ค�อ การืค�นหาแบบเรื�ยงล�าด้�บ (Sequential search) และการืค�นหาแบบไบนารื� (Binary search)
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล31
กุาร์คั�นหาข้�อมิ�ลในอาร์�เร์ย์�
กุาร์คั�นหาแบบเร์!ย์งล(าด�บ (Sequential search) ในการืค�นหาข�อม)ลแบบเรื�ยงล�าด้�บน��นก'ค�อเรืาตั�อง
เรื"�มตั�นค�นหาข�อม)ลตั��งแตั�ตั�วแรืกส0ด้ในอารื เรืย โด้ยท�าการืเปรื�ยบเท�ยบข�อม)ลท��เรืาตั�องการืค�นหาก�บข�อม)ลในอารื เรืย
ว�าตัรืงก�นหรื�อไม� ถ�าตัรืงก�นก'ให�หย0ด้ค�นหา แตั�ถ�าค�นหาไป จนกรืะท��งถ1งช่�องส0ด้ท�ายก'ย�งไม�เจอ น��นแสด้งว�าข�อม)ลท�� เรืาตั�องการืค�นหาไม�อย)�ในอารื เรืย น��น พื้"จารืณาตั�วอย�างตั�อ
ไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล32
กุาร์คั�นหาแบบเร์!ย์งล(าด�บ (Sequential search)
class array10 { public static void main(String[] args) { int[] arr = {8,9,6,3}; int num = 9; int i = 0; for (i=0;i<arr.length;i++) { if(num == arr[i]){ System.out.printf("%d is in
array.%n",num); break; } } if (i == arr.length) System.out.printf("%d is not in array.%n",num); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล33
กุาร์คั�นหาแบบเร์!ย์งล(าด�บ (Sequential search)
ผลล�พื้ธ์ ท��ได้�ค�อ9 is in array.
การืค�นหาข�อม)ลแบบน��อาจด้)เป-นการืค�นหาท��ง�ายตั�อการืเข�ยนโปรืแกรืมเพื้รืาะจะท�าการืเรื"�มตั�นค�นหาข�อม)ลตั��งแตั�ตั�ว
แรืกไปจนถ1งตั�วส0ด้ท�าย ถ�าเจอตั��งแตั�ตั�น ๆ ก'ด้� แตั�ถ�าไม�เจอก'ตั�องค�นหาไปจนถ1งตั�วส0ด้ท�ายก�อนถ1งจะบอกได้�ว�าไม�
เจอ ถ�าข�อม)ลในอารื เรืย ม�จ�านวนมาก จะท�าให�เส�ยเวลาในการืค�นหานานมากกว�าจะรื) �ว�าไม�เจอ
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล34
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
หล�กการืค"ด้ค�อเรืาจะตั�องท�าการืแบ�งข�อม)ลออกเป-นสองส�วนก�อน จะเรื"�มท�าการืค�นหาข�อม)ลท0กครื��ง โด้ยข�อม)ลท��เรืาตั�องการืจะค�นหา
ตั�องน�าไปเปรื�ยบเท�ยบก�บข�อม)ลในอารื เรืย ณ ตั�าแหน�งก1�งกลาง ของอารื เรืย ถ�าข�อม)ลท��เรืาตั�องการืค�นหาม�ค�าน�อยกว�าตั�าแหน�งน��
เรืาจะท�าการืค�นหาข�อม)ลตั�อไปทางด้�านซึ่�ายของอารื เรืย ช่0ด้น�� แตั�ถ�าข�อม)ลท��ตั�องการืค�นหาม�ค�ามากกว�าตั�าแหน�งก1�งกลางน�� เรืา
จะท�าการืค�นหาข�อม)ลตั�อไปทางด้�านขวาของอารื เรืย ช่0ด้น�� ท�าเช่�นน�� ไปเรื��อย ๆ จนกว�าจะพื้บข�อม)ลท��ตั�องการืค�นหา หรื�อไม�ก'หย0ด้ถ�าไม�
เจอข�อม)ลน��น แตั�การืค�นหาข�อม)ลแบบไบนารื�น� �นจ�าเป-นตั�องจ�ด้เรื�ยงข�อม)ลให�
เรื�ยงล�าด้�บจากน�อยไปหามาก มาก�อนท�าการืค�นหาข�อม)ล ม"ฉะน��น จะท�าการืค�นหาแบบไบนารื�ไม�ได้�
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล35
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
class array11 { public static void main(String[] args) { int[] arr =
{0,1,2,3,4,5,6,7,8,9,10}; int num=3; int head = 0; int tail = arr.length - 1; int middle; boolean found = false;
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล36
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
while(head <= tail) { middle = (head + tail) / 2; if(num == arr[middle]) { found = true; break; } else if(num < arr[middle]) tail = middle - 1; else head = middle + 1; }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล37
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
if(found) System.out.printf("Found
%d.%n",num); else System.out.printf("%d not
found.%n",num); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล38
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
ผลล�พื้ธ์ ท��ได้�ค�อFound 3.
จากตั�วอย�างท��ผ�านมาอาจด้)เหม�อนว�ายากตั�องเข�ยน โปรืแกรืมยาวกว�าจะได้�ค�าตัอบ ซึ่1�งท��จรื"งแล�ว จาวาม�เมด้ธ์
อด้หน1�งท��ช่��อว�า binalrySearch() เป-นเมด้ธ์อด้ท��ท�าการื ค�นหาแบบไบนารื�ให�เรืาได้� (แตั�ข�อม)ลตั�องเรื�ยงจากน�อยไป
หามาก )
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล39
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
import java.util.Arrays; class array12 { public static void main(String[] args) { int[] arr = {0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int num = 3; int found = Arrays.binarySearch(arr, num); if(found >= 0) System.out.printf("Found %d at index %d.
%n",num,found); else System.out.printf("%d is not in array.
%n",found); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล40
กุาร์คั�นหาแบบไบนาร์!% (Binary search)
ผลล�พื้ธ์ ค�อFound 3 at index 3.
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล41
กุาร์จั�ดเร์!ย์งข้�อมิ�ลในอาร์�เร์ย์�(Sort)
ในกรืณ�จากจ�ด้เรื�ยงข�อม)ลจากน�อยไปหามากก'เช่�นก�น สามารืถท�าได้�ด้�วยการืใช่�เมด้ธ์อด้ Arrays.sort() ด้�ง
ตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล42
กุาร์จั�ดเร์!ย์งข้�อมิ�ลในอาร์�เร์ย์�(Sort)
import java.util.Arrays; class array13 { public static void main(String[] args) { int[] arr = new int[20]; int i; for(i = 0; i < arr.length; i++) arr[i] = (int)(Math.random() * 100 + 1); for(i = 0; i < arr.length; i++) { if(i % 10 == 0) System.out.println(); System.out.printf("%d \t",arr[i]); }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล43
กุาร์จั�ดเร์!ย์งข้�อมิ�ลในอาร์�เร์ย์�(Sort)
System.out.println(); Arrays.sort(arr); for(int j = 0; j < arr.length; j++) { if(j % 10 == 0) System.out.println(); System.out.printf("%d \t",arr[j]); } System.out.println(); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล44
กุาร์จั�ดเร์!ย์งข้�อมิ�ลในอาร์�เร์ย์�(Sort)
ผลล�พื้ธ์ ท��ได้�ค�อ 57 2 78 93 69 11 83 50 9
12
90 31 56 90 72 85 80 90 38
85
2 9 11 12 31 38 50 56 57
69 72 78 80 83 85 85 90 90 90
93
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล45
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ในการืปรืะกาศอารื เรืย สองม"ตั"สามารืถท�าได้�ด้�วยการืเพื้"�ม เครื��องหมาย [] เข�าไปอ�กหน1�งตั�วจากเด้"มเพื้��อเป-นการืบอก
จาวาว�าม�สองม"ตั" ตั�วอย�างเช่�นint [] [] arr2 = new int[5][5];
ซึ่1�งหมายถ1งการืปรืะกาศ arr2 ให�เป-นอารื เรืย 2 ม"ตั" ท��ม� 5 แถว ๆ ละ 5 ช่�อง ด้�งรื)ป
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล46
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล47
int [] [] arr2 = new int [5] [5];
ด�ชน!ข้องข้�อมิ�ลในแต&ละแถว
arr2[0]
arr2 [1]
arr2 [2]
arr2 [3]
arr2 [4]
[0]
[1]
[3]
[2]
[4]
ช"%อข้อง array และ ด�ชน!ข้องข้�อมิ�ลแต&ละต�ว
(index)
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
class array14 { public static void main(String[] args) { int[][] arr2 = new int[5][5]; for(int i = 0; i < arr2.length; i++) { for(int j = 0; j < arr2[i].length; j++)
{ System.out.printf("%d \
t",arr2[i][j]); } System.out.println(); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล48
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ผลล�พื้ธ์ ท��ได้�ค�อ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล49
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
class array15 { public static void main(String[] args) { int[][] arr2 = new int[5][5]; for(int i = 0; i < arr2.length; i++) { for(int j = 0; j < arr2[i].length; j++)
{ arr2[i][j] = (int)
(Math.random() * 10 + 1); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล50
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
for(int i = 0; i < arr2.length; i++) { for(int j = 0; j < arr2[i].length; j++)
{ System.out.printf("%d \
t",arr2[i][j]); } System.out.println(); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล51
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ผลล�พื้ธ์ ท��ได้�ค�อ 5 8 6 8 5 1 1 5 10 6 7 8 10 5 7 9 1 1 7 9 5 7 10 7 4
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล52
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ในการืปรืะกาศอารื เรืย 2 ม"ตั"แล�วก�าหนด้ค�าเรื"�มตั�นท��ไม�ใช่� ศ)นย ให�ก�บอารื เรืย สามารืถท�าได้�โด้ยไม�ตั�องส0�มตั�วเลข ลอง
พื้"จารืณาตั�วอย�างตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล53
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
class array16 { public static void main(String[] args) { int[][] arr2 = { {9, 8, 7},{6, 5, 4},{3, 2, 1} }; for(int i = 0; i < arr2.length; i++) { for(int j = 0; j < arr2[i].length; j++){ System.out.printf("%d \t",arr2[i][j]); } System.out.println(); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล54
กุาร์สร์�างอาร์�เร์ย์� 2 มิ�ต�
ผลล�พื้ธ์ ท��ได้�ค�อ 9 8 7 6 5 4 3 2 1
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล55
กุาร์ใช�อาร์�เร์ย์�สองมิ�ต�ที่!%แต&ละแถวมิ!ข้�อมิ�ลไมิ&เที่&ากุ�น
class array17 { public static void main(String[]
args) { double[][] arr2 = new
double[4][]; arr2[0] = new double[4]; arr2[1] = new double[3]; arr2[2] = new double[2]; arr2[3] = new double[1];
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล56
กุาร์ใช�อาร์�เร์ย์�สองมิ�ต�ที่!%แต&ละแถวมิ!ข้�อมิ�ลไมิ&เที่&ากุ�น
for(int i = 0; i < arr2.length; i++) { for(int j = 0; j < arr2[i].length; j++){ System.out.printf("%.2f \t",arr2[i][j]); } System.out.println(); } } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล57
กุาร์ใช�อาร์�เร์ย์�สองมิ�ต�ที่!%แต&ละแถวมิ!ข้�อมิ�ลไมิ&เที่&ากุ�น
ผลล�พื้ธ์ ท��ได้�เป-นด้�งน�� 000. 000. 000. 000. 000. 000. 000. 000. 000. 000.
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล58
ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อคั(านวณหา คั&าส�งส�ด คั&าต(%าส�ด และคั&าเฉล!%ย์
import java.util.Scanner;class array18 { public static void main(String[] args) { Scanner input = new
Scanner(System.in); int [][]num = new int[2][3]; double average; int max, min, sum = 0; int count = 0;
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล59
ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อคั(านวณหา คั&าส�งส�ด คั&าต(%าส�ด และคั&าเฉล!%ย์
for(int i = 0; i < num.length; i++) { for(int j = 0; j < num[i].length; j++) { System.out.printf("Input
num[%d][%d]:",i,j); num[i][j] = input.nextInt(); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล60
ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อคั(านวณหา คั&าส�งส�ด คั&าต(%าส�ด และคั&าเฉล!%ย์
max = num[0][0]; min = num[0][0]; for(int i = 0; i < num.length; i++) { for(int j = 0; j < num[i].length; j++) { if(num[i][j] > max) max = num[i][j]; if(num[i][j] < min) min = num[i][j]; sum += num[i][j]; count++;
} }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล61
ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อคั(านวณหา คั&าส�งส�ด คั&าต(%าส�ด และคั&าเฉล!%ย์
average = (double)sum / count; System.out.printf("Maximum score is %d%n" ,
max); System.out.printf("Minimun score is %d%n" , min); System.out.printf("Average score is %.2f%n" ,
average); } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล62
ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อคั(านวณหา คั&าส�งส�ด คั&าต(%าส�ด และคั&าเฉล!%ย์
ผลล�พื้ธ์ ท��ได้�ค�อ Input num[0 0 1][ ]: Input num[0 1 2][ ]: Input num[0 2 3][ ]: Input num[1 0 4][ ]: Input num[1 1 5][ ]: Input num[1 2 6][ ]: Maximum score is 6 Minimum score is 1 Average score is 350
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล63
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
ตั�วอย�างตั�อไปน��เป-นตั�วอย�างการืใช่�อารื เรืย 2 ม"ตั"เพื้��อรื�บ ข�อม)ลจ�านวนน�กศ1กษา 4 ช่��นป9 ของมหาว"ทยาล�ยแห�งหน1�ง
โด้ยสมมตั"ให�ม�คณะท��งหมด้ 3 คณะค�อ บรื"หารืธ์0รืก"จ ว"ทยาศาสตัรื และศ"ลปศาสตัรื ด้�งตัารืางตั�อไปน��
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล64
คัณะ ป2 1 ป2 2 ป2 3 ป2 4 ร์วมิ
บร์�หาร์ธุ�ร์กุ�จั
100 80 60 40 …
ว�ที่ย์าศาสตร์�
80 70 60 50 …
ศ�ลปศาสตร์�
50 40 30 20 …
ร์วมิ … … … … …
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
ให�ท�าการืเข�ยนโปรืแกรืมเพื้��อหาจ�านวนรืวมของแตั�ละคณะ จ�านวนรืวมแตั�ละช่��นป9 และจ�านวนน�กศ1กษาท��งหมด้ของ
มหาว"ทยาล�ยแห�งน�� แสด้งผลล�พื้ธ์ ในรื)ปแบบตัารืางโด้ยม� ผลล�พื้ธ์ ท��ได้�จากการืค�านวณปรืะกอบในตัารืางด้�วย (การื
รื�บข�อม)ลและการืแสด้งผลล�พื้ธ์ ออกทางจอภาพื้ให�ท�าเฉพื้าะตั�วเลขเท�าน��นไม�ตั�องรื�บข�อความและแสด้งข�อความออก
ทางจอภาพื้)
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล65
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
import java.util.Scanner;class array19 { public static void main(String[] args) { Scanner input = new
Scanner(System.in); int [][]stu = new int[3][4]; int []sumRow = new int[3]; int []sumCol = new int[4]; int sumTotal=0;
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล66
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { System.out.printf("Input
student[%d][%d]:",i,j); stu[i][j] = input.nextInt(); //รื�บข�อม)ล }}
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล67
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
// หาจ�านวนน�กศ1กษาแตั�ละคณะ (sumRow) for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { sumRow[i] += stu[i][j]; } } //หาจ�านวนน�กศ1กษาแตั�ละช่��นป9 (sumCol) และจ�านวนน�กศ1กษาท��งหมด้ (sumTotal) for(int j = 0; j < 4; j++) { for(int i = 0; i < 3; i++) { sumCol[j] += stu[i][j]; //หาจ�านวนน�กศ1กษาแตั�ละช่��นป9
(sumCol) } sumTotal += sumCol[j]; // หาจ�านวนน�กศ1กษาท��งหมด้ (sumTotal) }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล68
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
//แสด้งผลล�พื้ธ์ ออกทางจอภาพื้ for(int i = 0; i < 3; i++) { for(int j = 0; j < 4; j++) { System.out.printf("%5d",stu[i][j]); //แสด้ง
จ�านวนน�กศ1กษา }
System.out.printf("%5d",sumRow[i]); //แสด้งจ�านวนน�กศ1กษาแตั�ละคณะ
System.out.printf("%n"); }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล69
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
for(int j = 0; j < 4; j++) {
System.out.printf("%5d",sumCol[j]); //แสด้งจ�านวนน�กศ1กษาแตั�ละช่��นป9
} System.out.printf("%5d",sumTotal); //แสด้ง
จ�านวนน�กศ1กษาท��งหมด้ } }
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล70
กุาร์ใช�อาร์�เร์ย์� 2 มิ�ต�เพิ"%อร์�บข้�อมิ�ลที่!%เป1นตาร์าง
ผลล�พื้ธ์ ท��ได้�ม�ด้�งน�� Input student[0 0 100][ ]: Input student[0180 Input student[0 2 60][ ]: Input student[0 3 40][ ]: Input student[1 0 80][ ]: Input student[1170 Input student[1 2 60][ ]: Input student[1350 Input student[2 0 50][ ]: Input student[2 1 40][ ]: Input student[2 2 30][ ]: Input student[2 3 20][ ]: 100 80 60 40 280
80 70 60 50 260
50 40 30 20 140
230 190 150 110 680
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล71
แบบฝึ5กุห�ด
จงเข�ยนโปรืแกรืมท��รื �บข�อม)ลจ�านวนเตั'มเข�าทางค�ย บอรื ด้ท��งหมด้ 8 ตั�ว เก'บไว�ในอารื เรืย 1 ม"ตั" เพื้��อท�าการืหาค�า
ส)งส0ด้เลขค�� ค�าตั��าส0ด้เลขค�� ค�าส)งส0ด้เลขค)� ค�าตั��าส0ด้เลขค)� แล�วให�แสด้งผลล�พื้ธ์ ท��ง 4 ออกทางจอภาพื้
จงเข�ยนโปรืแกรืมท��ท�าหน�าท��ส0�มตั�วเลขตั��งแตั� 1 ถ1ง 100 ท��งหมด้ 100 ตั�ว เก'บไว�ในอารื เรืย แล�วให�แสด้งผลล�พื้ธ์ ท��
ได้�จากการืส0�มท��งหมด้ออกบนจอภาพื้โด้ยก�าหนด้ให�แสด้ง ข�อม)ลเป-น4 แถว ๆ ละ 2 5 ตั�ว
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล72
แบบฝึ5กุห�ด
จงเข�ยนโปรืแกรืมท��ท�าหน�าท��สรื�างอารื เรืย 2 ม"ตั"ขนาด้2 x 2 จ�านวน3 ตั�วเพื้��อรื�บข�อม)ลเป-นเลขจ�านวนเตั'มเข�าทางค�ย บอรื ด้
หล�งจากน��นให�น�าอารื เรืย 2 ตั�วแรืกมาบวกก�น (Matrix addition) โด้ยเก'บผลล�พื้ธ์ ท��งหมด้ท��ได้�ไว�ในอารื เรืย ตั�วท��สามแสด้งค�าท��อย)�ในอารื เรืย ท��งสามออกบนจอภาพื้
จงเข�ยนโปรืแกรืมเพื้��อท�าหน�าท��รื �บข�อม)ลยอด้ขายของส"นค�า2 ช่น"ด้ ในรือบ3 เด้�อน เพื้��อค�านวณหาจ�านวนยอด้ขายแตั�ละช่น"ด้
จ�านวนยอด้ขายในแตั�ละเด้�อน และจ�านวนยอด้ขายท��งหมด้ แสด้งผลล�พื้ธ์ ท��ได้�ออกทางจอภาพื้ สมมตั"ข�อม)ลเป-นด้�งน�� (การื
รื�บข�อม)ลและการืแสด้งผลล�พื้ธ์ ออกทางจอภาพื้ให�ท�าเฉพื้าะตั�วเลขเท�าน��นไม�ตั�องรื�บข�อความและแสด้งข�อความออกทางจอภาพื้)
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล73
แบบฝึ5กุห�ด
ส�นคั�า เด"อนที่!% 1
เด"อนที่!% 2
เด"อนที่!% 3
ร์วมิ
A 100 200 150 …
B 50 100 200 …
ร์วมิ … … … …
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล74
ผศ . พิ�เชษฐ์� ศ�ร์�ร์�ตนไพิศาลกุ�ล