일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘트레이닝
- 돈
- 자바스크립트
- 백준알고리즘
- 책알남
- 투자
- 경제
- 알고리즘 공부
- 알고리즘공부
- 서평
- algorithmTest
- Java
- 다독
- 프로그래밍언어
- 지혜를가진흑곰
- 프로그래머스 알고리즘 공부
- 독후감
- 독서
- 자바
- JavaScript
- 성분
- algorithmtraining
- 재테크
- 화장품
- 책을알려주는남자
- algorithmStudy
- 주식
- C
- C++
- 채권
- Today
- Total
탁월함은 어떻게 나오는가?
[JAVASCRIPT] Sort(소트) 함수 다양한 Test 본문
[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 , 10, 9]
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 = [1, 3, 8, 10, 5, 7, 11, 19, 77, 33]
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 = [1, 3, 8, 10, 5, 7, 11, 19, 77, 33]
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 앞에 표시되면 정렬 알고리즘은 안정적입니다.
정수 또는 보다 일반적으로 전체 요소가 핵심인 데이터와 같이 동일한 요소를 구별 할 수 없는 경우 안정성은 문제가 되지 않습니다. 모든 키가 다르면 안정성도 문제가 되지 않습니다.
불안정한 정렬 알고리즘은 안정적으로 구현할 수 있습니다. 이를 수행하는 한 가지 방법은 키 비교를 인위적으로 확장하여 원래 입력 목록의 항목 순서를 타이 브레이커로 사용하여 동일한 키가 있는 두 개체 간의 비교를 결정하는 것입니다. 그러나 이 순서를 기억하려면 추가 시간과 공간이 필요할 수 있습니다.
안정적인 정렬 알고리즘을 위한 한 가지 응용 프로그램은 기본 및 보조 키를 사용하여 목록을 정렬하는 것입니다. 예를 들어, 한 벌의 카드를 클럽, 다이아몬드, 하트, 스페이드 순서로 정렬하고 각 수트 내에서 카드를 다음과 같이 정렬한다고 가정합니다. 계급. 우선 순위별로 카드를 정렬 한 다음 (모든 종류를 사용하여) 정장별로 안정적인 정렬을 수행하면 됩니다.
각 슈트 내에서 안정된 정렬은 이미 완료된 순위 별 순서를 유지합니다. 이 아이디어는 여러 키로 확장 될 수 있으며 기수 정렬에 의해 활용됩니다. 예를 들어, 수트별로 먼저 비교 한 다음 수트가 동일한 경우 순위별로 비교하여 사전 식 키비교를 사용하여 불안정한 정렬로 동일한 효과를 얻을 수 있습니다.
'[Snow-ball]프로그래밍(컴퓨터) > 자바스크립트(JavaScript)' 카테고리의 다른 글
[JAVASCRIPT] MAP TEST(맵 테스트) (0) | 2021.02.03 |
---|---|
[JAVASCRIPT] Set Test(셋 테스트) (0) | 2021.02.03 |
[JAVASCRIPT] 기본값 매개변수 (default parameter) (0) | 2021.02.02 |
[JAVASCRIPT] ClassObject(클래스오브젝트) (0) | 2021.02.01 |
[JavaScript] 데이터타입(DataType) 기능확인 (0) | 2021.01.31 |