qsort()
void qsort(
void* __base, // 비교할 배열
size_t __nmemb, // 비교할 배열의 전체 아이템 수
size_t __size, // 비교할 배열 아이템 하나의 사이즈
__compar_fn_t __compar // 비교함수
)
비교함수 (__compar_fn_t)
typedef int(* __compar_fn_t) (const void*, const void*)
예제
// 비교함수
int sort_asc(const void* item1, const void* item2)
{
// int 비교라고 가정하고 int 값으로 캐스팅
int a = *((int*)item1);
int b = *((int*)item2);
return a - b;
}
unsigned long readData[10] = {};
byte itemSize = sizeof(readData[0]);
byte itemCount = sizeof(readData) / itemSize;
void loop()
{
// 어떤 아날로그 값을 10번 가져와서 중앙값(median)을 취한다고 가정
for (byte i=0; i<10; i++) {
readData[i] = analogRead(A0);
}
// 정렬
qsort(readData, itemCount, itemSize, sort_asc);
// 중앙값 출력
Serial.println((readData[4] + readData[5]) / 2);
}
.
'Arduino' 카테고리의 다른 글
[Arduino] 메모리 (Memory) (0) | 2018.01.23 |
---|