benjama409   12-17-2013, 01:08 AM
#1
คืออาจารย์ให้เขียนโค้ดหาค่า มากสุดไปถึงน้อยสุด กับค่าน้อยสุดไปค่ามากสุด
เช่น ให้แสดงผล แบบนี้อะครับ
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 ไม่เข้าใจโค้ดเลย
สิ่งที่เข้าใจคือ การสลับค่าเลขโดนเช็คเงื่อนไข ไปเรื่อยๆ รู้แค่นั้นล่ะครับ
วานผู้รู้ช่วยลองเขียนโค้ดและอธิบายให้ทีครับ ขอบคุณมากครับ
dreamknight   12-17-2013, 09:42 AM
#2
;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
This post was last modified: 12-17-2013, 10:43 AM by dreamknight.

May the flames guide your way. Every ending will make you stronger.

benjama409   12-18-2013, 08:11 AM
#3
thank ja
Jirayu   12-20-2013, 06:23 PM
#4
ภาษา C มีฟังก์ชัน qsort() สำหรับ sort อาร์เรย์ครับ

http://www.tutorialspoint.com/c_standard..._qsort.htm

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

http://stackoverflow.com/questions/81156...descending

[Image: 76561198011764062.png]

[Image: graphic.png]
  
Users browsing this thread: 2 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.