메뉴 건너뛰기

app

quick sort

박영식2003.11.05 19:58조회 수 2418댓글 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 조회 2524
박영식
2005.03.25 조회 2253
박영식
2003.12.25 조회 4050
박영식
2003.12.19 조회 3610
박영식
2003.11.05 조회 17690
박영식
2003.11.05 조회 2418
박영식
2003.11.05 조회 2627
박영식
2003.11.05 조회 2324
박영식
2003.11.05 조회 2363
박영식
2003.11.05 조회 3387
박영식
2002.06.14 조회 2732
박영식
2002.04.18 조회 3538
박영식
2002.04.18 조회 3435
첨부 (0)
위로