สารบัญ
1 บทนำ 1
การจัดเก็บและจัดการข้อมูล.............................................................................................................. 1
ปริศนา 15.......................................................................................................................................... 2
การสร้างเขาวงกต.............................................................................................................................. 7
กลุ่มเซตไร้ตัวร่วม....................................................................................................................... 8
สรุป................................................................................................................................................. 16
แบบฝึกหัด....................................................................................................................................... 17
2 การเก็บข้อมูลด้วยแถวลำดับ 19
อินเทอร์เฟซ Collection................................................................................................................. 19
คลาส ArrayCollection.................................................................................................................. 22
แถวลำดับขยายขนาดได้.................................................................................................................. 25
ArrayCollection แบบไม่จำขนาด................................................................................................. 28
คอลเล็กชันเก็บได้แต่อ็อบเจกต์....................................................................................................... 30
บริการอื่นๆ...................................................................................................................................... 31
String toString( )..................................................................................................................... 32
Object[ ] toArray( )................................................................................................................ 33
boolean equals(Object x)...................................................................................................... 34
แบบฝึกหัด....................................................................................................................................... 36
3 การวิเคราะห์เชิงเส้นกำกับ 39
เวลาการทำงาน................................................................................................................................ 39
คำสั่งพื้นฐาน................................................................................................................................... 40
การนับจำนวนคำสั่งที่ถูกใช้งาน...................................................................................................... 40
สัญกรณ์เชิงเส้นกำกับ..................................................................................................................... 42
โอเล็ก........................................................................................................................................ 43
โอเมกาเล็ก................................................................................................................................ 43
ทีตาใหญ่................................................................................................................................... 44
โอใหญ่...................................................................................................................................... 44
โอเมกาใหญ่.............................................................................................................................. 45
การวิเคราะห์เชิงเส้นกำกับ.............................................................................................................. 47
แบบฝึกหัด....................................................................................................................................... 51
4 การเก็บข้อมูลแบบโยง 55
การโยงข้อมูล.................................................................................................................................. 55
ปมข้อมูล......................................................................................................................................... 56
คลาส LinkedCollection................................................................................................................. 57
LinkedCollection แบบมีปมหัว..................................................................................................... 62
ประสิทธิภาพการทำงาน.................................................................................................................. 64
แบบฝึกหัด....................................................................................................................................... 64
5 รายการ 69
อินเทอร์เฟซ List............................................................................................................................ 69
การสร้างรายการด้วยแถวลำดับ........................................................................................................ 71
boolean equals(Object x)...................................................................................................... 73
ประสิทธิภาพการทำงาน........................................................................................................... 74
การสร้างรายการโยง........................................................................................................................ 75
รายการโยงเดี่ยวแบบไม่วนที่มีปมหัว....................................................................................... 76
รายการโยงคู่แบบวนที่มีปมหัว................................................................................................. 79
ตัวอย่างการใช้งานรายการ............................................................................................................... 84
รายการที่ปรับตัวเอง.................................................................................................................. 84
ฟังก์ชันพหุนามตัวแปรเดียว..................................................................................................... 85
เวกเตอร์มากเลขศูนย์................................................................................................................ 89
เมทริกซ์มากเลขศูนย์................................................................................................................ 94
แบบฝึกหัด....................................................................................................................................... 97
6 กองซ้อน 101
ข้อกำหนดของกองซ้อน................................................................................................................ 101
การสร้างกองซ้อนด้วยรายการ....................................................................................................... 102
การสร้างกองซ้อนด้วยแถวลำดับ................................................................................................... 103
ตัวอย่างการใช้งานกองซ้อน.......................................................................................................... 104
การตรวจสอบการใส่วงเล็บ..................................................................................................... 104
กองซ้อนภายในเครื่องเสมือนจาวา........................................................................................ 106
นิพจน์เติมหลัง....................................................................................................................... 109
แบบฝึกหัด..................................................................................................................................... 115
7 แถวคอย 117
ข้อกำหนดของแถวคอย................................................................................................................. 117
การสร้างแถวคอยด้วยรายการ........................................................................................................ 118
การสร้างแถวคอยด้วยแถวลำดับวงวน........................................................................................... 119
ตัวอย่างการใช้งานแถวคอย........................................................................................................... 122
แถวคอยให้หยุดรอ ................................................................................................................. 123
การเรียงลำดับข้อมูลแบบฐาน................................................................................................. 124
การค้นตามแนวกว้าง............................................................................................................... 127
การหาวิถีสั้นสุดในตาราง........................................................................................................ 128
ปริศนาคูณสามหารสอง.......................................................................................................... 130
แบบฝึกหัด..................................................................................................................................... 133
8 แถวคอยบุริมภาพ 135
ข้อกำหนดของแถวคอยบุริมภาพ.................................................................................................. 135
การสร้างด้วยรายการ...................................................................................................................... 137
การสร้างด้วยฮีปแบบทวิภาค.......................................................................................................... 139
การแทนฮีปแบบทวิภาคด้วยแถวลำดับ.................................................................................... 139
void enqueue(Object e)....................................................................................................... 140
Object dequeue().................................................................................................................. 141
การสร้างฮีปจากข้อมูลในแถวลำดับ........................................................................................ 143
ฮีปมากสุดและฮีปน้อยสุด............................................................................................................. 145
ตัวอย่างการใช้งานแถวคอยบุริมภาพ............................................................................................. 146
การเรียงลำดับแบบฮีป............................................................................................................. 147
การเลือกข้อมูลตามอันดับ....................................................................................................... 148
การค้นตามต้นทุนน้อยสุด....................................................................................................... 150
ตัวจำลองวงจรตรรก................................................................................................................ 154
แบบฝึกหัด..................................................................................................................................... 163
9 ต้นไม้แบบทวิภาค 165
การสร้างต้นไม้.............................................................................................................................. 165
ต้นไม้นิพจน์................................................................................................................................. 169
บริการพื้นฐานของต้นไม้.............................................................................................................. 171
โครงสร้างเวียนเกิดของต้นไม้แบบทวิภาค............................................................................. 172
int numNodes(Node r)......................................................................................................... 173
int height(Node r)................................................................................................................. 173
int numLeaves(Node r)........................................................................................................ 174
Node copy(Node r).............................................................................................................. 174
Object[ ] toArray()............................................................................................................... 175
การแวะผ่านต้นไม้.................................................................................................................. 177
การวาดรูปต้นไม้..................................................................................................................... 182
รหัสฮัฟฟ์แมน............................................................................................................................... 186
การหาอนุพันธ์ด้วยต้นไม้นิพจน์.................................................................................................. 189
การลดรูปต้นไม้นิพจน์.................................................................................................................. 192
แบบฝึกหัด..................................................................................................................................... 194
10 ต้นไม้ค้นหาแบบทวิภาค 197
ลักษณะของต้นไม้ค้นหาแบบทวิภาค........................................................................................... 197
การค้นหาข้อมูล............................................................................................................................. 200
การค้นหาข้อมูลน้อยสุดและมากสุด............................................................................................. 203
การเพิ่มข้อมูล................................................................................................................................ 204
การลบข้อมูล.................................................................................................................................. 208
ความลึกเฉลี่ยของปม.................................................................................................................... 211
การเรียงลำดับแบบต้นไม้.............................................................................................................. 215
การสร้างเซต คอลเล็กชัน และแมป............................................................................................... 216
การสร้างเซตด้วยต้นไม้ค้นหาแบบทวิภาค.............................................................................. 216
การสร้างคอลเล็กชันด้วยต้นไม้ค้นหาแบบทวิภาค.................................................................. 217
การสร้างแมปด้วยต้นไม้ค้นหาแบบทวิภาค............................................................................ 218
ต้นไม้เอวีแอล................................................................................................................................ 222
การหมุนลูก............................................................................................................................. 224
โครงสร้างปมของต้นไม้เอวีแอล............................................................................................ 225
การเพิ่มและลบข้อมูล............................................................................................................. 226
การปรับต้นไม้ให้ถูกกฎ.......................................................................................................... 226
ต้นไม้ค้นหาแบบอื่น ๆ.................................................................................................................. 231
ต้นไม้บาน............................................................................................................................... 232
ต้นไม้ได้ดุล 2-3-4................................................................................................................... 235
ต้นไม้แดงดำ........................................................................................................................... 237
ต้นไม้ทรีป............................................................................................................................... 239
รายการก้าวกระโดด................................................................................................................. 240
แบบฝึกหัด..................................................................................................................................... 243
11 ตารางแฮช 247
ตารางเก็บข้อมูล............................................................................................................................. 247
ตารางแฮชแบบแยกกันโยง............................................................................................................ 251
ฟังก์ชันแฮช................................................................................................................................... 254
การแปลงคีย์ให้เป็นจำนวนเต็ม.............................................................................................. 255
กลวิธีการเขียนฟังก์ชันแฮช.................................................................................................... 257
ปฏิทรรศน์วันเกิด.......................................................................................................................... 260
ตารางแฮชแบบกำหนดเลขที่อยู่เปิด.............................................................................................. 261
การตรวจเชิงเส้น..................................................................................................................... 262
การตรวจกำลังสอง.................................................................................................................. 267
การแฮชสองชั้น....................................................................................................................... 272
ประสิทธิภาพของการแฮชเอกรูป............................................................................................ 273
การเลือกใช้ตารางแฮช................................................................................................................... 276
ข้อควรระวัง................................................................................................................................... 278
แบบฝึกหัด..................................................................................................................................... 279
12 ตัวแจงย้ำ 283
การใช้งาน...................................................................................................................................... 283
ตัวแจงย้ำสำหรับการเก็บข้อมูลในแถวลำดับ................................................................................. 286
ตัวแจงย้ำสำหรับรายการโยง......................................................................................................... 290
ตัวแจงย้ำสำหรับตารางแฮช........................................................................................................... 291
ตัวแจงย้ำสำหรับต้นไม้แบบทวิภาค.............................................................................................. 292
ตัวแจงย้ำสำหรับต้นไม้ค้นหาแบบทวิภาค.................................................................................... 295
ตัวแจงย้ำแบบขัดข้องอย่างเร็ว...................................................................................................... 296
แบบฝึกหัด..................................................................................................................................... 299
13 การเรียงลำดับข้อมูล 301
ข้อกำหนด..................................................................................................................................... 301
การเรียงลำดับแบบเลือก................................................................................................................ 303
การเรียงลำดับแบบฟอง................................................................................................................. 305
การเรียงลำดับแบบแทรก............................................................................................................... 307
การเรียงลำดับแบบเชลล์................................................................................................................ 310
การเรียงลำดับแบบผสาน............................................................................................................... 314
การเรียงลำดับแบบฮีป................................................................................................................... 318
การเรียงลำดับแบบเร็ว................................................................................................................... 320
การเปรียบเทียบวิธีเรียงลำดับแบบต่าง ๆ...................................................................................... 329
ขอบเขตล่างของเวลาการเรียงลำดับ.............................................................................................. 330
แบบฝึกหัด..................................................................................................................................... 332
บรรณานุกรม 337
ดัชนี 339