정렬 알고리즘: JavaScript - 빠른 정렬 알고리즘🚀

목차
* 🤓 INTRODUCTION
* 👉🏻 ABOUT QUICK SORT ALGORITHM
* 👨🏻‍🏫 EXPLANATION
* 🖖🏻 PESUDO CODE
* 🛠 IMPLEMENTATION
* 👩🏻‍💻 CODE
* 🤔 COMPLEXITY
* 🙏 THANK YOU

🤓 소개

Top of the day, my dear coders! I hope you are all having a beautiful weekend. Welcome to another chapter of the Sorting algorithms with JavaScript series. Today we are talking about the QuickSort algorithm!

Connect with me via or

⚡⚡⚡ 교육 시간!





이 시리즈의 시작부터 다양한 알고리즘에 대해 이야기하고 있습니다. 제 생각에는 알고리즘을 용어나 아이디어로 언급해야 합니다.

수학뿐만 아니라 컴퓨터 과학의 알고리즘은 일반적으로 일련의 문제를 해결하거나 계산을 수행하기 위해 잘 정의되고 컴퓨터로 구현할 수 있는 명령의 유한한 시퀀스입니다.

알고리즘은 항상 모호하지 않으며 다음 작업을 수행하는 데 사용됩니다.
  • 계산
  • 데이터 처리
  • 자동화된 추론
    그리고 훨씬 더.

  • 중요한 것은 효과적인 알고리즘인 알고리즘이 유한한 공간과 시간 안에서 표현될 수 있다는 것입니다.

    알고리즘의 개념은 고대부터 존재해 왔습니다. 나눗셈 알고리즘과 산술 알고리즘은 기원전 2500년경 고대 바빌로니아 수학자와 이집트 수학자 c.2에 의해 사용되었습니다. 기원전 1550년.

    '알고리즘'이라는 단어는 페르시아 수학자 무하마드 이븐 무사 알-콰리즈미(Muhammad ibn Musa al-Khwarizmi)의 이름을 "알고리즘(algorismus)"으로 명명한 그의 지리적 기원을 나타내는 라틴어 니스바(nisba)에 뿌리를 두고 있습니다.

    Algorism is the art by which at present we use those Indian figures, which number two times five. - Alexandre de Villedieu


    👉🏻 퀵 정렬 알고리즘에 대하여

    Quicksort is an efficient sorting algorithm. His father is a British computer scientist Tony Hoare , 생각하는 것처럼 다음 gif의 신사가 아닙니다.


    퀵 정렬 알고리즘은 분할 정복 알고리즘으로, 문제를 직접 해결할 수 있을 만큼 간단해질 때까지 동일하거나 관련된 유형의 두 개 이상의 하위 문제로 재귀적으로 분해하는 알고리즘입니다.

    퀵 정렬 알고리즘에서 모든 실제 작업은 분할 정복 패러다임의 분할 단계에서 발생합니다.

    👨🏻‍🏫 설명

    We are dividing our sorting problem into three steps: divide, conquer, combine.

    Let's take a typical subarray A[p...r]

    DIVIDE: Partitioning (rearrange) the array A[p...r] into two (possibly empty) subarrays A[p...q-1] and A[q+1...r] such that each element of A[p...q-1] is less than or equal to A[q], which is, in turn, less than or equal to each element of A[q+1...r]. We are computing the index q as part of this partitioning procedure.

    CONQUER: Sort the two subarrays A[p...q-1] and A[q+1...r] by recursive calls to quicksort.

    COMBINE: Because the subarrays are already sorted, no work is needed to combine them: the entire array A[p...r] is now sorted.

    🖖🏻 유사 코드

    QUICKSORT(A: array, p, r)
    1  if p < r
    2    q = PARTITION(A,p,r)
    3    QUICKSORT(A,p,q-1)
    4    QUICKSORT(A,q+1,r)
    
    PARTITION(A: array, p, r)
    1  x = A[r]
    2  i = p - 1
    3  for j = p to r-1
    4    if A[j] <= x
    5      i = i + 1
    6      swap A[i] with A[j]
    7  swap A[i+1] with A[r]
    8  return i+1
    

    🛠 구현


    👨🏻‍💻 코드

    Play with code! 🚀

    🤔 복잡성

    Worst case: It occurs when the partitioning routine produces one subproblem with n-1 elements and one with 0 elements. If the partitioning is maximally unbalanced at every recursive level of the algorithm, the running time is Big O of n2

    Best case: In the most even possible split, Partition function will produce two subproblems, each of size more than n/2, since one if of size [n/2] and one of size [n/2]-1; In this case, complexity is Big O of nlogn (Pretty good!)

    🙏 읽어주셔서 감사합니다!

    References:
    School notes...
    School books...
    Khan academy

    댓글을 남겨주세요, 당신에 대해 말해주세요, 당신의 일에 대해, 당신의 생각을 댓글로 남겨주세요, 저와 연결하세요!

    ☕ 저를 지원하고 집중하세요!


    즐거운 해킹 시간 되세요! 😊

    좋은 웹페이지 즐겨찾기