ตัวอย่างโค้ดภาษาซีสำหรับการรับค่าตัวเลขจำนวน 10 ครั้ง แล้วเก็บไว้ในตัวแปร Array จากนั้นเมื่อรับค่าตัวเลขทั้งหมดแล้ว ก็จะนำมาเรียงลำดับตัวเลขจากมากไปน้อย และเมื่อเรียงลำดับเสร็จแล้วก็จะนำค่าที่ได้ใน Array มาแสดงผล
ตัวอย่างโค้ด
/***************************************************
* Author : CS Developers
* Author URI: https://www.comscidev.com
* Facebook : https://www.facebook.com/CSDevelopers
***************************************************/
#include<stdio.h>
int main()
{
int arr_size = 10;
int number[arr_size];
int i, tmp;
for(i=0; i<arr_size; i++)
{
printf(" Enter number %d : ", i+1);
scanf("%d", &number[i]);
}
i = 0;
do
{
if(i < arr_size-1 && number[i] < number[i+1])
{
tmp = number[i+1];
number[i+1] = number[i];
number[i] = tmp;
i = 0;
}
else
{
i++;
}
}while(i < arr_size);
printf("\n Descending order : ");
for(i=0; i<arr_size; i++)
{
printf(" %d", number[i]);
}
return 0;
}
อธิบายเพิ่มเติม
1. arr_size เป็นตัวแปรที่กำหนดขึ้นมาเพื่อระบุจำนวนตัวเลขที่ต้องการรับ ซึ่งในตัวอย่างกำหนดไว้ที่ 10 โดยสามารถกำหนดค่าได้ตามที่ต้องการ เช่น
int arr_size = 15; //โปรแกรมก็จะวนรับค่าตัวเลขทั้งหมดจำนวน 15 ครั้ง
2. tmp เป็นตัวแปรที่ใช้สำหรับเก็บตัวเลขไว้ชั่วคราว เพื่อให้สามารถย้ายตำแหน่งระหว่างตัวเลขที่น้อยกว่ากับตัวเลขที่มากกว่าได้
3. เงื่อนไขการสลับตำแหน่ง จะเปรียบเทียบระหว่างตำแหน่งที่ i และ i+1(ตำแหน่งถัดไป) ถ้าตำแหน่งถัดไปมากกว่าตำแหน่งที่ i จะทำการสลับตำแหน่งกัน (มาก อยู่ตำแหน่งซ้าย, น้อย อยู่ตำแหน่งขวา) จากนั้นก็จะเริ่มวนลูปเพื่อเปรียบเทียบตำแหน่งใหม่ตั้งแต่ตำแหน่งที่ 0 อีกครั้ง วนไปเรื่อยๆ จนกว่าจะเรียงลำดับได้ถูกต้อง