irpg Community
อยากถามเกี่บวกับ Sorting Function in C ทีครับ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: Community Central (https://irpg.in.th/forum-1.html)
+--- Forum: Town Square (https://irpg.in.th/forum-2.html)
+--- Thread: อยากถามเกี่บวกับ Sorting Function in C ทีครับ (/thread-1557.html)



อยากถามเกี่บวกับ Sorting Function in C ทีครับ - benjama409 - 12-17-2013

คืออาจารย์ให้เขียนโค้ดหาค่า มากสุดไปถึงน้อยสุด กับค่าน้อยสุดไปค่ามากสุด
เช่น ให้แสดงผล แบบนี้อะครับ
number is: 5
number is: 9
number is: 3
number is: 0
number is: 2

you is : 9 5 3 2 0
โดยอาจารย์ ผมให้ไปหาข้อมูลเกี่ยวกับ Sorting มาทำโค้ดดังกล่าว
พอผมลองค้นหาข้อมูล มันพาให้งงอะครับ Y Y ไม่เข้าใจโค้ดเลย
สิ่งที่เข้าใจคือ การสลับค่าเลขโดนเช็คเงื่อนไข ไปเรื่อยๆ รู้แค่นั้นล่ะครับ
วานผู้รู้ช่วยลองเขียนโค้ดและอธิบายให้ทีครับ ขอบคุณมากครับ


RE: อยากถามเกี่บวกับ Sorting Function in C ทีครับ - dreamknight - 12-17-2013

;3

เอาแบบลูกทุ่งๆ น่ะฮับ เข้าใจง่ายดี แหะๆ = v ="

int arr[] = [5,9,3,2,0];
int e, i, j;

/* วนลูปเพื่อเรียงครับ ตัวสุดท้ายไม่จำเป็นต้องเรียงครับ ฉะนั้นเราจะหาตัวที่ 0-3 เท่านั้น*/
for(j=0; j < 3(คือขนาดอาร์เรย์-2); j++)
{

e = arr[j]

/* วนลูปเพื่อหาค่ามากสุดครับ โดยเราจะไม่สนใจตัวที่เราเรียงไปแล้ว ดังนั้น i = j ขอรับ*/
for(i = j; i < 4(คือขนาดอาร์เรย์-1); i++)
{
if(arr[i] > e)
{
e = arr[i]; /* ค่าไหนมากที่สุดเก็บไว้ที่ e ครับ */
arr[i] = arr[j]; /* เป็นการย้ายตำแหน่ง เช่น เมื่อ 9 มากกว่า 5 ให้เอา 5 ไว้แทนที่ 9 ครับ*/
arr[j] = e;
}
}

}

ค่าที่ถูกเรียงขณะวนลูปจะเป็นแบบนี้ฮะ
9 5 3 0 2
9 5 3 0 2
9 5 3 0 2
9 5 3 2 0

ตัวอย่างอีกสักตัวเนอะ arr[] = [1,0,5,2,3]
5 0 1 2 3
5 3 1 2 0
5 3 2 1 0
5 3 2 1 0


RE: อยากถามเกี่บวกับ Sorting Function in C ทีครับ - benjama409 - 12-18-2013

thank ja


RE: อยากถามเกี่บวกับ Sorting Function in C ทีครับ - Jirayu - 12-20-2013

ภาษา C มีฟังก์ชัน qsort() สำหรับ sort อาร์เรย์ครับ

http://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm

ฟังก์ชัน qsort() ต้องทำงานร่วมกับฟังก์ชันสำหรับ compare ค่าสองตัว ซึ่งถ้าอยากทำ reverse sorting ก็แก้ฟังก์ชัน compare ให้คืนค่ากลับมาเป็นอีกแบบครับ

http://stackoverflow.com/questions/8115624/using-quick-sort-in-c-to-sort-in-reverse-direction-descending