아두맨 아이디어 창작소

아두맨

아이디어 창작 도우미

    코딩/C#

    [C#] 엑셀처럼 정렬하기 나머지 행들을 같이 정렬하는 방법

    아두맨 2023. 4. 2. 14:20

     

    여러개의 데이터 리스트 값들을 정렬하고 나머지 값들도 같이 정렬해야할 경우

    엑셀에서는 필터 버튼 한방인데..


     

    ⭕ 사용 예제

     

    그림의 왼쪽 시간 정렬된 데이터를 오른쪽처럼 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

    '코딩/C#'의 다른글

    • 현재글[C#] 엑셀처럼 정렬하기 나머지 행들을 같이 정렬하는 방법

    관련글

    • [C#] 2중 리스트 사용하는 방법 2023.04.02
    • [C#] .csv 파일 읽기 쓰기 2023.04.02
    • [C#] string 특정 문자 포함 합치기 [string.Join()] 2023.04.02
    • [C#] List 데이터 정렬 하는 방법 2023.04.02
    프로필사진

    아이디어를 실현시켜드립니다!

    • 최신글 전체보기 (29)
      • 코딩 (10)
        • Python (4)
        • C# (6)
      • ESP32 (12)
        • 장치설정 (9)
        • 센서활용 (2)
        • ESP32 프로젝트 (1)
      • 아두이노 (4)
        • 장치설정 (3)
        • 아두이노 프로젝트 (1)
      • 라즈베리파이 (1)
        • 라즈베리파이 프로젝트 (1)
      • 블로그 관련 (1)

    최근글과 인기글

    • 최근글
    • 인기글

    공지사항

    Tag

    wokwi, LED, 라즈베리파이, 아두이노 딥슬립, 2중리스트, deepsleep, 시제품, 데이터, 아두이노, 2중 리스트, Arduino, ESP32, st7789, 딥슬립, 아두맨, c#, 웹, 의뢰, 전력관리, 개발,

    최근댓글

    Copyright 아두맨. All rights reserved.

    티스토리툴바