메뉴 건너뛰기

app

quick sort

박영식2003.11.05 19:58조회 수 2433댓글 0

    • 글자 크기
void Csorts::quick_sort(int array[], int left, int right)
{
          int i, j;
          int temp;
          int pivot;
//중간 과정 보기 함수
        view_course(array);
          if(left < right) {
                // pivot원소를 배열의 가장 끝 원소로 정한다.
                  pivot = array[right];
                  // i, j는 배열의 처음과 끝을 나타내는 배열의 첨자(subscript)이다.
                  i = left - 1;
                  j = right;
                  // pivot원소를 중심으로 두 부분리스트로 나눈다.
                  do {         
                          // 배열의 앞에서 부터 차례대로 pivot원소보다 작은
                          // 원소들은 그대로 두고, 큰 원소를 만나면 i값을
                          // 늘리지 않고, 루프문을 빠져나간다.
                          do {
                                  i++;
                          } while(array[i] < pivot);  

                          // 배열의 끝에서 부터 차례대로 pivot원소보다 큰
                          // 원소들은 그대로 두고, 작은 원소를 만나면 j값을
                          // 줄이지 않고, 루프문을 빠져나간다.
                          do {
                                  j--;
                          } while(array[j] > pivot);
                          // 위의 두 루프문에서 각 부분리스트에 속할 원소들이
                          // 아닌 원소들은 서로 자리를 바꾸어 준다.
                          if(i < j) {
                                  temp = array[i];
                                  array[i] = array[j];
                                  array[j] = temp;
                          } else {
                                  break;
                          }
                  } while(i < j);
                  // pivot원소를 두 부분리스트의 사이에 위치시킨다.
                  temp = array[i];
                  array[i] = array[right];
                  array[right] = temp;
                  // 각 두 부분리스트에 대해서 위의 과정을 반복한다.
                  quick_sort(array, left, i - 1);
                  quick_sort(array, i + 1, right);
          }
}
박영식 (비회원)
    • 글자 크기
merge sort (by 박영식) bubble과 selection sort (by 박영식)

댓글 달기

박영식
2006.06.18 조회 2538
박영식
2005.03.25 조회 2271
박영식
2003.12.25 조회 4069
박영식
2003.12.19 조회 3620
박영식
2003.11.05 조회 17706
박영식
2003.11.05 조회 2433
박영식
2003.11.05 조회 2644
박영식
2003.11.05 조회 2340
박영식
2003.11.05 조회 2375
박영식
2003.11.05 조회 3400
박영식
2002.06.14 조회 2748
박영식
2002.04.18 조회 3556
박영식
2002.04.18 조회 3459
첨부 (0)
위로