여러개의 데이터 리스트 값들을 정렬하고 나머지 값들도 같이 정렬해야할 경우
엑셀에서는 필터 버튼 한방인데..
⭕ 사용 예제
그림의 왼쪽 시간 정렬된 데이터를 오른쪽처럼 data1 최대값을 기준으로 내림차순 정렬하려 할 때
🍺 코드 예제
C 기본 정렬 코드에서 mod1, mod2 나머지 부분을 sample과 똑같이 움직여주면 된다
static void sortAvg(List<double> sample, List<double> mod1, List<double> mod2) // sample 을 따라가는 나머지 값 2개
{
for (int i = 0; i < sample.Count - 1; i++)
{
for (int j = i + 1; j < sample.Count; j++)
{
if (sample[i] < sample[j]) // 내림차순 정렬식
{
double tmp0 = sample[i];
sample[i] = sample[j];
sample[j] = tmp0;
double tmp1 = mod1[i];
mod1[i] = mod1[j];
mod1[j] = tmp1;
double tmp2 = mod2[i];
mod2[i] = mod2[j];
mod2[j] = tmp2;
}
}
}
}
이 코드는 "sample" 리스트를 기준으로 "mod1"과 "mod2" 두 개의 리스트를 함께 정렬하는 함수입니다. 함수는 "static"으로 선언되어 있으며, 파라미터로 "List<double>" 타입의 "sample", "mod1", "mod2" 세 개의 리스트를 받습니다.
함수의 로직은 이중 반복문을 사용하여 "sample" 리스트를 기준으로 내림차순 정렬을 수행합니다. 바깥쪽 반복문은 정렬할 값들의 첫번째 요소부터 마지막에서 두 번째 요소까지 반복하며, 안쪽 반복문은 바깥쪽 반복문의 다음 요소부터 마지막 요소까지 반복합니다. 이렇게 하면 첫번째 요소와 마지막 요소, 두번째 요소와 마지막에서 두번째 요소 등을 순서대로 비교하면서 정렬을 수행할 수 있습니다.
반복문 안에서는 "if" 문을 사용하여 "sample[i]" 값이 "sample[j]" 값보다 작으면 정렬을 수행합니다. 이때 "tmp0", "tmp1", "tmp2" 세 개의 변수를 사용하여 "sample[i]", "mod1[i]", "mod2[i]" 값을 각각 "sample[j]", "mod1[j]", "mod2[j]" 값으로 교체합니다. 이렇게 하면 "sample" 리스트를 기준으로 "mod1"과 "mod2" 리스트도 함께 정렬되게 됩니다.
이 함수를 사용하면 "sample" 리스트의 값에 따라 "mod1"과 "mod2" 리스트가 함께 정렬되기 때문에, 이후 분석 등에서 두 리스트의 값들을 함께 사용해야 할 경우에 유용하게 사용될 수 있습니다.
🌲 생각
각각의 값들을 평균내고 최대값 구하고 비교하고 등등
여러 작업을 하는 구조에서 사용할 법하다
'코딩 > C#' 카테고리의 다른 글
[C#] 2중 리스트 사용하는 방법 (0) | 2023.04.02 |
---|---|
[C#] .csv 파일 읽기 쓰기 (0) | 2023.04.02 |
[C#] string 특정 문자 포함 합치기 [string.Join()] (0) | 2023.04.02 |
[C#] List 데이터 정렬 하는 방법 (0) | 2023.04.02 |
[C#] C#에서 전기자동차 충전소 정보 API를 활용하는 방법 (0) | 2023.04.01 |