Promise를 활용한 데이터 소팅 기능 구현

현대적인 웹 애플리케이션에서 데이터 소팅은 매우 중요한 기능입니다. 데이터를 정렬하는 것은 사용자 경험을 향상시키고 데이터의 가시성을 개선하는 데 도움이 됩니다.

이번 기사에서는 JavaScript의 Promise를 활용하여 데이터 소팅 기능을 구현하는 방법을 살펴보겠습니다.

소팅 알고리즘 선택하기

데이터를 소팅하는 가장 일반적인 알고리즘은 크게 두 가지입니다. 하나는 버블 소팅(Bubble Sort)이고, 다른 하나는 퀵 소팅(Quick Sort)입니다.

퀵 소팅은 일반적으로 더 빠르지만 구현이 복잡하며 큰 데이터셋에서 성능이 저하될 수 있습니다. 버블 소팅은 구현이 단순하지만 더 많은 실행 시간이 소요됩니다. 기본적인 데이터 소팅을 구현하려면 두 가지 알고리즘 중 하나를 선택해야 합니다.

코드 예시

이제 실제 예시 코드를 살펴보겠습니다.

버블 소팅 알고리즘

function bubbleSort(arr) {
  return new Promise((resolve, reject) => {
    for(let i = 0; i < arr.length; i++) {
      for(let j = 0; j < arr.length-i-1; j++) {
        if(arr[j] > arr[j+1]) {
          // Swap elements
          let temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;
        }
      }
    }
    resolve(arr); // 소팅된 배열을 resolve로 반환
  });
}

퀵 소팅 알고리즘

function quickSort(arr) {
  return new Promise((resolve, reject) => {
    if(arr.length <= 1) {
      resolve(arr);
      return;
    }
    
    const pivot = arr[arr.length - 1];
    const left = [];
    const right = [];
    
    for(let i = 0; i < arr.length - 1; i++) {
      if(arr[i] < pivot) {
        left.push(arr[i]);
      } else {
        right.push(arr[i]);
      }
    }
    
    resolve(Promise.all([quickSort(left), pivot, quickSort(right)]).then(values => {
      const [left, pivot, right] = values;
      return [...left, pivot, ...right];
    }));
  });
}

데이터 소팅 함수 사용하기

const data = [5, 2, 8, 3, 1, 9];

bubbleSort(data)
  .then(sortedData => {
    console.log("버블 소팅 결과:", sortedData);
    // output: [1, 2, 3, 5, 8, 9]
  })
  .catch(err => {
    console.error("소팅 오류 발생:", err);
  });

quickSort(data)
  .then(sortedData => {
    console.log("퀵 소팅 결과:", sortedData);
    // output: [1, 2, 3, 5, 8, 9]
  })
  .catch(err => {
    console.error("소팅 오류 발생:", err);
  });

위의 예시에서는 두 가지 소팅 함수인 bubbleSortquickSort를 정의하고, 주어진 배열을 소팅한 후 Promise를 반환합니다. Promise의 결과는 .then 메서드를 통해 처리할 수 있습니다.

결론

JavaScript의 Promise를 활용하여 데이터 소팅 기능을 구현하는 방법을 살펴보았습니다. 버블 소팅과 퀵 소팅 알고리즘을 사용하여 데이터를 소팅하는 예시 코드를 제공했습니다. 이러한 소팅 기능을 활용하면 웹 애플리케이션에서 데이터를 정렬하는 데 도움이 될 수 있습니다.

#javascript #promise #데이터소팅