ปัญหา
ทำไมการเรียงลำดับทำให้การค้นหาในภาษา 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