Counting sort(계수 정렬) - O(n)
Counting sort는 배열에 담긴 숫자가 몇 번씩 들어가 있는지 counting하여 정렬해주는 방식입니다! 예를 들어서 1부터 9까지의 정수만 들어갈 수 있는 int[] unsorted = {9, 2, 1, 3, 9, 7} 이라는 배열이 있다고 가정하면 index가 0부터 9까지의 빈 배열을 하나 만들어 줍니다. int[] countArr = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} countArr의 인덱스가 1부터 9까지의 정수 역할을 해주게 됩니다. index 0 에는 숫자 0의 갯수가 들어가고, index 1에는 숫자 1의 갯수가 들어가고, index 2에는 숫자 2의 갯수가 들어가고,,,index 9에는 숫자 9의 갯수가 들어가게 되는 것입니다. (여기서는 1~9만 들어가므로 ..
2022. 5. 31.
Bitwise Operator(비트 단위 연산자)
비트 단위 연산을 위한 연산자가 따로 존재한다. 먼저 비트는 이진수로 0 또는 1의 값을 갖는다. 비트 단위 연산이란 이진수의 각 비트 값을 연산하는 것을 의미한다. 위의 그림에 나온 이진수를 예로 들자면, 01010010 이라는 이진수의 각 비트마다 (0,1,0,1,0,0,1,0) 모종의 연산을 수행하는 것이다. Swift에는 NOT, AND, OR, XOR, Shift 연산자가 있다. (Java도 거의 동일한 것 같았다.) 1. NOT 연산자 (~) : 0과 1이 반대되는 수를 반환한다. (1의 보수에 해당한다.) ~0101 = 1010 이 되는 셈이다. 예를 들어서, 정수 5에 NOT 연산자를 사용하면 (~5) 이는 ~0101으로 인식이 된다. 그러면 0101에서 0과 1을 반전시킨 수인 1010이..
2022. 4. 15.