ตัวอย่างโค้ดภาษาซี สำหรับการรับค่าตัวเลขจำนวน 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 Ascending 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 อีกครั้ง วนไปเรื่อยๆ จนกว่าจะเรียงลำดับได้ถูกต้อง
ผลลัพธ์
