✅ User Interface 사용자와 컴퓨터 사이의 상호작용하는 시스템 (마우스, 키보드), UI를 GUI (Graphic User Interface)라고도 하며 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 작업 환경을 말한다.
✅ User Experience 사용자가 서비스를 직,간접적으로 사용하면서 누적시킨 총 경험
위의 7가지 요소를 말하며 각각이 뛰어나기 보다는 적당한 7각형을 만드는 것이 좋다.
사용자가 제품이나 서비스를 시작함으로 인해서 취할 수 있는 모든 행동에 따른 화면의 흐름
( 직사각형 : 화면, 다이아몬드 : 행동, 화살표 : 흐름 )
사용자의 흐름에 따라 상황에 맞는 행동들을 생성할 수 있고, 어색한 부분을 발견하여 수정하거나 삭제할 수 있다.
➡️ 좋은 UX를 형성시킬 수 있다.
✅ UX > UI 관계이며, 좋은 UI라고 해서 좋은 UX가 보장되지 않고, 또한 좋은 UX라고 해서 좋은 UI가 보장되는 것은 아니다. ➡️ 서로 보완하는 관계
앞에서부터 현재원소와 현재 원소의 오른쪽의 원소와 값을 비교해 (오름차순이라면) 현재 원소 값이 크면 swap
1라운드에서n-1회, 그라운드에서n -2회, ... , n-1라운드에서 1회 비교...
총 비교 횟수는 (n-1) +(n- 2)+•• •+1~ n^2/ 2
➡️ 이 비교횟수는 입력데이터의 순서와 상관없이 일정
➡️ 숫자의 교체횟수는 입력데이터에 의존 (최선 - 이미 정렬이 되어 있는 경우 / 최악 - 반대로 정렬이 되어 있는 경우)
➡️ 시간 복잡도 0(n^2)
const swap = function(idx1, idx2, arr){
//1. 임시 변수 활용
let temp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = temp;
//2. XOR 연산 활용 (Integer 일 때만 사용)
arr[idx1] ^= arr[idx2]; // arr[idx1] = arr[idx1] ^ arr[idx2]
arr[idx2] ^= arr[idx1];
arr[idx1] ^= arr[idx2];
//3. 구조 분해 할당 (Destructuring assignmnet) 이용
[arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
}
let bubbleSort = function(arr){
for(let i = 0 ; i < arr.length-1 ; i++){
for(let j = 0 ; j < arr.length-1-i ; j++){
//앞은 이미 정렬이 되어 있기 때문에 arr.length-1-i까지
if(arr[j] > arr[j+1]) swap(j,j+1,arr);
}
}
}