#INT602 Sorting (3/3) [Merge Sort, Quick Sort, Sorting Large Records , External Sorting]

Posted on November 11, 2014 (68 views)

Merge Sort
ที่เรียก Merge Sort เพราะใช้เทคนิค Merge เป็น Lists ที่ Sort แล้ว 2 อันมาทำการ Merge กัน (BigO = N Log N) โดยวิธีง่ายๆที่ทำกันอยู่คือมี Array 3 อัน เช่น A, B เก็บข้อมูลที่ Sort แล้ว และ Array C ไว้เก็บผลลัพธ์ โดยการเปรียบเทียบใน Array 2 อันนั้น จะดูว่าตัวไหนน้อยกว่าก็ Copy ไปเก็บไว้ใน …

#INT602 Sorting (2/3) [ Shell Sort, Heap Sort]

Posted on November 11, 2014 (56 views)

Shell Sort
จริงๆแล้ว Shell Sort ควรจะเรียกว่า Diminishing increment sort เพราะเทคนิคที่ใช้คือมีการใช้ Increment หลายๆค่า โดยเริ่มจากค่าที่มากไปยังค่าที่น้อย แต่ชื่อมันยาวก็เลยเรียก Shell Sort และอีกประการหนึ่งคือคนที่คิดชื่อ D.L. Shell (1959) ประเด็นสำคัญของ Shell Sort จะมีเรื่อง increment sequence เข้ามาเกี่ยวข้อง โดยลักษณะของ sequence จะเป็นลักษณะ h1, h2, … , ht และโดยส่วนใหญ่ h1=1

แต่จริงๆแล้ว shell sort เริ่มมาจากการ insertion …

#INT602 Sorting (1/3) [Insertion Sort, Selection Sort, Bubble Sort , Cocktail Shaker Sort]

Posted on November 10, 2014 (71 views)

Sorting การจัดเรียงข้อมูล ทำไมถึงต้องเรียน Sorting เพราะอย่างหนึ่งคือเป็นพื้นฐานของ Algorithm และอีกอย่างหนึ่งคือมันน่าสนใจ โดยการ Sorting มีหลายวิธีในการทำ และแต่ละวิธีก็จะมีประสิทธิภาพที่แตกต่างกัน ณ ปัจจุบันนี้ความจพเป็นในการเขียน code น้อยเพราะสามารถหาข้อมูลได้จาก Internet ทั่วไป

Differences in environment  เป็นการแบบการเก็บข้อมูลใน Memory ซึ่งจะได้สองลักษณะคือ

External Sorting กรณีนี้ข้อมูลที่เก็บได้ไม่ได้เก็บไว้ใน Main Memory อาจจะเก็บไว้ใน External Hard disk, Tapes หรืออื่นๆ Algorithm ที่เกิดขึ้นมาสำหรับ External Sorting ไม่เยอะเพราะถูกจำกัดจากคุณลักษณะของที่ที่เก็บข้อมูล เช่นการเก็บข้อมูลใน Disk ก็จะสามารถ …

#INT602 Priority Queues (3/3) [Binomial Queues]

Posted on November 08, 2014 (69 views)

Binomial Queues
คุณสมบัติของ Priority Queues ทั่วไปที่เป็น Heap ไม่สนับสนุนการ Merge ทำให้ Binomial Queues เป็น Priority Queues ที่สนับสนุนการ Merge นั้นเองโดยสามารถใช้ Insert และ DeleteMin ได้ปกติ

Binomial Queues Structure คุณสมบัติโครงสร้างอาจจะดูซับซ้อน แต่คุณสมบัติลำดับยังเหมือนกับ Heap ทั่วไป เพราะค่าที่ Root Node จะมีค่า Priority สูงที่สุด ความแตกต่างคือมันจะมี Heap หรือ Trees หลายๆต้นได้ใน Binomial Queues …

#INT602 Priority Queues (2/3) [Basic Heap Operations]

Posted on November 07, 2014 (68 views)

Insert  การเพิ่มข้อมูลเข้าไปใน Heap นั้นจะพิจารณาโครงสร้างก่อนหลังจากนั้นจะพิจารณาลำดับทีหลัง เมื่อถึงขั้นตอนตรวจสอบหรือพิจารณาลำดับแล้วนั้นในหนังสือที่เรียนจะใช้คำว่า “Percolate up” ซึ่งลักษณะที่เกิดขึ้นจะมีการปรับตำแหน่งของค่าที่ Inert เข้าไปเมื่อมีค่า Priority ที่มากกว่านั้นเอง ตัวอย่างการ Insert ดังนี้

DeleteMin การลบค่า Node ซึ่งเป็นการการเพราะใน Heap ค่าน้อยสุดหรือที่มี Priority มากที่สุดจะอยู่ตรง Root Node ตัอย่างเช่น…

#INT602 Priority Queues (1/3) [Binary Heap, Structure Property, Heap Order Property]

Posted on October 31, 2014 (115 views)

 ทำไมต้องมี Priority Queues ? เพราะบางอย่างมันฉุกเฉิน บางอย่างมันจำเป็น เช่น ในชีวิตประจำวันรถพยาบาลรับคนเจ็บในกรณีฉุกเฉิน ควรจะมี Priority Queue ตัวอย่างในทางเทคนิคเช่นใน OS จำเป็นต้องมี Priority Queue ในการ Task Program ที่ทำงานอยู่ ในการทำงานหลายๆโปรแกรมพร้อมๆกัน อย่างที่เราเคยชินคือเปิดเพลงฟังไปด้วย เปิดเว็บไซต์อ่านข้อมูลไปด้วย หรือเกิดอยากเล่นหุ้น เปิดตารางหุ้นไปด้วย และอาจจะกำลังพิมพฺ์งานอยู่ด้วย OS จำเป็นต้องรู้ว่ามี Task …

บรรยายประสบการณ์ธุรกิจ ตอน เรื่องเล่าจากพี่ถึงน้อง

Posted on October 14, 2014 (142 views)

ช่วงสัปดาห์ที่ผ่านมามีโอกาสได้ไปเป็นหนึ่งในผู้บรรยายเกี่ยวกับผู้ประกอบการ ประสบการณ์ในการทำธุรกิจ รู้สึกยินดีมากที่นานๆจะได้ทำอะไรอย่างนี้ ได้กลับมาจับไมค์อีกครั้งหลังจากไม่ได้ไปยืนพูดบรรยายหน้าห้องที่มีคนฟังเยอะๆ นานมามากแล้ว.. ตื่นเต้นดีครับ ซึ่งผมได้เดินทางไปบรรยายที่ มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตสุราษฎร์ธานี ใช้บริการสายการบิน AirAsia อย่างเคยครับกำหนดการวันเวลาบินก็ดังนี้ครับ

ครั้งนี้บอกตามตรงช่วงเช้าของวันที่ 6 มีเรื่องยุ่งๆหลายอย่างก่อนจะได้ออกจากบ้านต้องเตรียมเอกสารสำหรับส่งสินค้าที่เตรียมส่งออก ทำเอาไปถึงสนามบินสายเกือบตกเครื่องกันเลยครับ ต้องบอกเลยว่าพนักงานสายการบินตรงเคาน์เตอร์ด้านหน้าจุดเช็คอินบริการไม่ค่อยดีครับ พูดจาไม่ค่อยสุภาพเท่าไหร่ แต่ก็เอาเถอะผมไปสายเองยอมรับผิดไม่อยากจะโวยวาย..

ไปถึงสุราษฎร์ฯ ก็มีเพื่อนหน้าตาดีใจดีทั้งสองท่านมารอรับ (joyjeaun.zaymagutae, HengPSU) ต้องขอบคุณมากกันเลยครับ ทำเอาสะดวกสะบายแบบชิวๆ ไปตลอดทาง แถมมีเพื่อนอย่าง ctonz ให้ที่พักพิงซุกหัวนอนโดยไม่มีค่าใช้จ่ายครับ เรียกได้ว่าความสบายคูณสองกันเลยครับ แต่น่าเสียดายที่รอบนี้เจ้าบ้าน …

#INT602 Hashing

Posted on September 03, 2014 (160 views)

Hashing เป็นการเก็บข้อมูลในตาราง ด้วยเวลาคงที่โดยเฉลี่ย..

General Idea ค่าที่ได้ใน TableSize เริ่มต้นที่ 0 เพราะมีความหมายกับผลลัพธ์ เพราะค่าอาจจะได้ออกมาเป็น 0 นั้นเอง

Hash Table เป็นวิธีเก็บข้อมูลในตารางโดยใช้ Key อ้างอิงไปในตารางส่วนใหญ่เป็นตัวเลข Alpha base, Alphanumeric ฯลฯ

ตัวอย่างการเก็บค่าใน Hash Table ซึ่งการนำค่าไปเก็บนั้นขึ้นอยู่กับการเลือก Function ของผู้ใช้งาน โดยจากรูปอาจจะกำหนดค่าจากตัวเลขของตารางมาอ้างอิงชื่อ หรือเพื่อ Insert ข้อมูลลงไปนั้นเอง
Hash Function
ผลลัพธ์ที่ได้จาก …

#INT602 B-Trees

Posted on September 03, 2014 (160 views)

B-Trees เป็น Search Trees ลักษณะหนึ่ง ข้อมูลเก็บใน Terminal Nodes เท่านั้น และข้อมูลจะเรียงจากน้อยไปหามาก

จากรูปภาพ B-Tree ที่มี Order = 4 ค่าของ Terminal Nodes จะมีค่าได้ไม่เกิด 4 กลุ่ม ในแต่ละ Sub Trees นั้นๆ  ค่าของตัวเลขบน Root Node …

#INT602 AVL Trees

Posted on September 02, 2014 (127 views)

ชื่อ AVL  Trees ก็มาจากชื่อคนคิดที่ชื่อว่า Adelson-Velskii and Landis ครับ และ AVL Trees มีคุณสมบัติโครงสร้างเพิ่มขึ้น ทุก Nodes Left และ Right จะมี Sub Trees เท่ากันซึ่งเรียกได้ว่าเป็น Perfect Sub Trees และส่วนที่สำคัญในการเช็คข้อมูลเรื่อง Balanced นั้นคือ ความสูงของ Left และ Right จะมีความสูงได้ต่างกันไม่เกิน 1 ระดับเท่านั้น ตัวอย่าง AVL Trees และที่ไม่ใช้ AVL Trees …