메뉴 건너뛰기

app

quick sort

박영식2003.11.05 19:58조회 수 2425댓글 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 조회 2527
박영식
2005.03.25 조회 2259
박영식
2003.12.25 조회 4054
박영식
2003.12.19 조회 3615
박영식
2003.11.05 조회 17699
박영식
2003.11.05 조회 2425
박영식
2003.11.05 조회 2630
박영식
2003.11.05 조회 2327
박영식
2003.11.05 조회 2366
박영식
2003.11.05 조회 3390
박영식
2002.06.14 조회 2735
박영식
2002.04.18 조회 3541
박영식
2002.04.18 조회 3438
첨부 (0)
위로