function selectionSort(arr){
for(let i = 0; i < arr.length; i++)
{
let minIndex = i;
for (let j = i + 1; j < arr.length; j++)
{
if (arr[minIndex] > arr[j]){
minInedx = j;
}
}
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
} // 선택 정렬
function bubbleSort(arr){
for (let i = 0; i < arr.length - 1; i++)
{
for (let j = 0; j < arr.length - i - 1; j++)
{
if (arr[j] < arr[j + 1])
{
let tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
} // 버블 정렬
function insertionSort(arr){
for(let i = 1; i < arr.length; i++)
{
for(let j = i; j > 0; j--){
if(arr[j] < arr[j - 1])
{
let temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
else
break;
}
}
} //삽입 정렬
분할 정복이란 3가지 프로세스로 나눌 수 있다.
function merge(arr, left, mid, right){
let i = left;
let j = mid + 1;
let k = left;
while (i <= mid && j <= right)
{
if (arr[i] <= arr[j]) sorted[k++] = arr[i++];
else sorted[k++] = arr[j++];
}
if (i > mid)
{
for (; j<=right;j++) sorted[k++] = arr[j];
}
else {
for (; i <= mid; i++) sorted[k++] = arr[i];
}
for (let x = left; x <= right; x++)
{ arr[x] = sorted[x]};
}
function mergeSort(arr, left, right)
{
if (left < right)
{
let mid = parseInt((left + right) / 2);
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
sort()
함수는 O(NlogN)을 보장한다.sort()
함수의 매개변수는 함수이다.arr.sort((a, b) => a-b) // 오름차순
arr.sort((a, b) => b-a) // 내림차순
arr.sort() //문자열 정렬 (오름차순)
//문자열 대소문자 구분하고 싶지 않을 경우
function compare(a, b){
let caseA = a.toUpperCase();
let caseB = b.toUpperCase();
if (caseA < caseB) return -1;
else if (caseB > caseA) return 1;
else return 0;
}
arr.sort(compare);