250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[JAVASCRIPT] Sort(소트) 함수 다양한 Test 본문

[Snow-ball]프로그래밍(컴퓨터)/자바스크립트(JavaScript)

[JAVASCRIPT] Sort(소트) 함수 다양한 Test

Snow-ball 2021. 2. 2. 23:22
반응형

자바스크립트 배열의 내장 함수에 sort()가 존재합니다. 명칭 그대로 배열 안의 원소를 정렬하는 함수입니다. sort()메소드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따읍니다.

 

정렬 속도와 복잡도는 각 구현방식에 따라 다를 수 있습니다.

 

Sort 함수 test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const Test2 = () => {
 
    const months = ['Market' , 'Feed''Jeadong'"Doctor"]
    months.sort()
    console.log(months)
    // 출력 : ["Doctor", "Feed", "Jeadon", "Market"]
    months.sort((a,b) => b - a)
    console.log(months)
    // 출력 : ["Doctor", "Feed", "Jeadon", "Market"]
 
    const num = [20 , 1 , 109]
    num.sort()
    console.log(num)
    // 출력 : [1, 10, 20, 9]
    num.sort((a,b) => b - a)
    console.log(num)
    // 출력 : [20, 10, 9, 1]
 
 
    return (
        <div className="Test2">
            <p>Test2</p>
        </div>
    )
}
export default Test2
cs

Sort Reverse 함수 test

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const ArraySortTest = () => {
    let arr = [138105711197733]
 
    console.log("Before Reverse: " + arr)
    // arr 배열을 반대로 출력한다.
    arr.reverse()
    console.log("After Reverse: " + arr)
 
    return(
        <div className="ArraySortTest">
            <p>
                arry-test: ArraySortTest
            </p>
        </div>
    )
}
 
export default ArraySortTest
cs

 

 

 

 

 

 

 

 

 

 

 

 

 

Sort 함수 오름차순, 내림차순 정렬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const ArraySortTest2 = () => {
    let arr = [138105711197733]
 
    console.log("Before Sort: " + arr)
    arr.sort(function (a,b){
        return a - b
    })
    // 위의 함수를 밑에처럼 줄여쓸 수 있음
    // = () => 사용하면 간략해진다.
    //arr.sort((a,b) => b - a)
 
    // arr 오름차순 정렬
    console.log("After up Sort: " + arr)
    // 위의 함수를 밑에처럼 간결하게 가능하다.
    arr.sort((a,b) => b - a)
    // arr 내림차순 정렬
    console.log("After down Sort: " + arr)
 
    // 배열의 끝값 77
    console.log("Find Max = " + arr[arr.length -1])
    // 배열의 처음값 1
    console.log("Find Min = " + arr[0])
 
    return(
        <div className="ArraySortTest2">
            <p>
                arry-test: ArraySortTest2
            </p>
        </div>
    )
}
 
export default ArraySortTest2
cs

 

 

 

 

 

 

 

 

 

Stability(안정성)

 

안정적인 정렬 알고리즘은 반복되는 요소를 입력에 나타나는 것과 동일한 순서로 정렬합니다. 일부 데이터를 정렬 할 때 정렬 순서를 결정할 때 데이터의 일부만 검사합니다. 예를 들어 오른쪽의 카드 정렬 예에서 카드는 순위별로 정렬되고 해당 카드의 수트는 무시됩니다. 이렇게하면 원본 목록의 여러가지 하면 원본 목록의 여러가지로 올바르게 정렬 된 버전이 가능합니다. 안정적인 정렬 알고리즘은 다음 규칙에 따라 이 중 하나를 선택합니다. 두 개의 5개 카드처럼 두 항목이 동일하게 비교되면 상대적 순서가 유지되므로 하나가 입력에서 다른 항목보다 먼저 오면 출력에서 다른것보다 먼저 옵니다.

 

안정성은 다음과 같은 이유로 중요합니다. 이름과 클래스 섹션으로 구성된 학생 기록이 웹 페이지에서 동적으로 정렬됩니다. 첫 번째는 이름별로, 그 다음에는 두 번째 작업에서 클래스 섹션별로 정렬됩니다. 두 경우 모두 안정적인 정렬 알고리즘을 사용하는 경우 클래스 별 정렬 작업은 이름 순서를 변경하지 않습니다. 불안정한 정렬의 경우 섹션별로 정렬하면 이름 순서가 섞일 수 있습니다. 안정적인 정렬을 사용하면 사용자는 먼저 이름을 사용하여 정렬하여 다시 정렬하여 섹션별로 정렬 한 다음 이름별로 정렬하도록 선택할 수 있으므로 이름 순서가 유지됩니다.(일부 스프레드 시트 프로그램은 이 동장을 따릅니다. 이름별로 정렬 한 다음 섹션별로 정렬하면 섹션별로 알파벳순 학생 목록이 생성됩니다.)

 

 

 

 

 

 

 

 

 

보다 공식적으로 정렬되는 데이터는 레코드 또는 값의 튜플로 표시 될 수 있으며 정렬에 사용되는 데이터 부분을 key 라고 합니다. 카드 예에서 카드는 레코드 (랭크, 슈트)로 표시되고 키는 순위입니다. 동일한 키를 가진 두 개의 레코드는 R과 S가 있고 원래 목록에서 S 앞에 R이 나타날 때마다 R이 정렬된 목록에서 항상 S 앞에 표시되면 정렬 알고리즘은 안정적입니다.

 

정수 또는 보다 일반적으로 전체 요소가 핵심인 데이터와 같이 동일한 요소를 구별 할 수 없는 경우 안정성은 문제가 되지 않습니다. 모든 키가 다르면 안정성도 문제가 되지 않습니다.

 

불안정한 정렬 알고리즘은 안정적으로 구현할 수 있습니다. 이를 수행하는 한 가지 방법은 키 비교를 인위적으로 확장하여 원래 입력 목록의 항목 순서를 타이 브레이커로 사용하여 동일한 키가 있는 두 개체 간의 비교를 결정하는 것입니다. 그러나 이 순서를 기억하려면 추가 시간과 공간이 필요할 수 있습니다.

 

안정적인 정렬 알고리즘을 위한 한 가지 응용 프로그램은 기본 및 보조 키를 사용하여 목록을 정렬하는 것입니다. 예를 들어, 한 벌의 카드를 클럽, 다이아몬드, 하트, 스페이드 순서로 정렬하고 각 수트 내에서 카드를 다음과 같이 정렬한다고 가정합니다. 계급. 우선 순위별로 카드를 정렬 한 다음 (모든 종류를 사용하여) 정장별로 안정적인 정렬을 수행하면 됩니다.

 

각 슈트 내에서 안정된 정렬은 이미 완료된 순위 별 순서를 유지합니다. 이 아이디어는 여러 키로 확장 될 수 있으며 기수 정렬에 의해 활용됩니다. 예를 들어, 수트별로 먼저 비교 한 다음 수트가 동일한 경우 순위별로 비교하여 사전 식 키비교를 사용하여 불안정한 정렬로 동일한 효과를 얻을 수 있습니다.

 

 

 

 

 

 

 

 

 

베타존 : 네이버쇼핑 스마트스토어

나를 꾸미다 - 인테리어소품 베타존

smartstore.naver.com

 

반응형
Comments