ปัญหา
ทำไมการเรียงลำดับทำให้การค้นหาในภาษา C ง่ายขึ้น? คุณจะตัดสินประสิทธิภาพการคัดแยกในภาษา C ได้อย่างไร
วิธีแก้ปัญหา
การเรียงลำดับเป็นกระบวนการของการจัดเรียงองค์ประกอบทั้งจากน้อยไปมาก (หรือ) จากมากไปหาน้อย
-
คำว่า sorting เกิดขึ้นเมื่อมนุษย์ตระหนักถึงความสำคัญของการค้นหาอย่างรวดเร็ว
-
มีหลายสิ่งในชีวิตที่เราต้องค้นหา โดยเฉพาะบันทึกในฐานข้อมูล หมายเลขม้วนในรายการ หมายเลขในสมุดโทรศัพท์ หน้าเฉพาะในหนังสือ ฯลฯ
-
หากข้อมูลถูกเก็บไว้ในรูปแบบที่ไม่เรียงลำดับและไม่ได้เรียงลำดับ การค้นหาสิ่งใดสิ่งหนึ่งโดยเฉพาะจะทำได้ยาก แต่โชคดีที่แนวคิดเรื่องการจัดเรียงข้อมูลเกิดขึ้น ทำให้ทุกคนจัดเรียงข้อมูลได้ง่ายขึ้น
-
การจัดเรียงจะจัดเรียงข้อมูลตามลำดับซึ่งทำให้การค้นหาง่ายขึ้น
ประสิทธิภาพการจัดเรียง
-
หากเราต้องการจัดสำรับไพ่ตามลำดับ เราจะเริ่มโดยการตรวจสอบไพ่ทุกใบ จากนั้นจึงจัดสำรับไพ่เมื่อเราดำเนินการต่อไป
-
การจัดสำรับไพ่ต้องใช้เวลามากในการจัดลำดับ แต่เราก็ทำในลักษณะเดียวกัน แต่คอมพิวเตอร์ไม่ทำงานแบบนี้
-
ตั้งแต่เริ่มต้นยุคการเขียนโปรแกรม นักวิทยาศาสตร์ได้ทำงานเพื่อแก้ปัญหาการจัดเรียงโดยใช้อัลกอริทึมต่างๆ เพื่อจัดเรียงข้อมูล
เกณฑ์ในการตัดสินว่าอัลกอริธึมใดดีกว่าแบบอื่นมีดังนี้ -
- เวลาที่ใช้ในการจัดเรียงข้อมูลที่กำหนด
- ต้องใช้พื้นที่หน่วยความจำในการทำเช่นนั้น
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C สำหรับการเรียงลำดับข้อมูล -
#include<stdio.h> int main(){ int a[50], i,j,n,t,sm; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } for (i=0; i<n-1; i++){ sm=i; for (j=i+1; j<n; j++){ if (a[j] < a[sm]){ sm=j; } } t=a[i]; a[i]=a[sm]; a[sm]=t; } printf ("after selection sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
ผลลัพธ์
enter the No: of elements in the list: 4 enter the elements: 34 12 56 7 after selection sorting the elements are: 7 12 34 56