메뉴 건너뛰기

app

quick sort

박영식2003.11.05 19:58조회 수 2552댓글 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 조회 2642
박영식
2005.03.25 조회 2381
박영식
2003.12.25 조회 4200
박영식
2003.12.19 조회 3730
박영식
2003.11.05 조회 17819
박영식
2003.11.05 조회 2552
박영식
2003.11.05 조회 2774
박영식
2003.11.05 조회 2457
박영식
2003.11.05 조회 2494
박영식
2003.11.05 조회 3539
박영식
2002.06.14 조회 2870
박영식
2002.04.18 조회 3660
박영식
2002.04.18 조회 3572
첨부 (0)
위로