메뉴 건너뛰기

app

merge sort

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

    • 글자 크기
void Csorts::mergeSort(int numbers[], int temp[], int array_size)
//정렬해야하는 수, 임시 정렬 공간, 전체 수의 개수
{
  m_sort(numbers, temp, 0, array_size - 1);

}

void Csorts::m_sort(int numbers[], int temp[], int left, int right)
{
  int mid;

  if (right > left)
  {
    mid = (right + left) / 2;
    m_sort(numbers, temp, left, mid);
    m_sort(numbers, temp, mid+1, right);

    merge(numbers, temp, left, mid+1, right);
  }

}

void Csorts::merge(int numbers[], int temp[], int left, int mid, int right)
{
  int i, left_end, num_elements, tmp_pos;

  left_end = mid - 1;
  tmp_pos = left;
  num_elements = right - left + 1;

//중간 과정 보기 함수
        view_course(numbers);
  while ((left <= left_end) && (mid <= right))
  {
    if (numbers[left] <= numbers[mid])
    {
      temp[tmp_pos] = numbers[left];
      tmp_pos = tmp_pos + 1;
      left = left +1;
    }
    else
    {
      temp[tmp_pos] = numbers[mid];
      tmp_pos = tmp_pos + 1;
      mid = mid + 1;
    }
  }

  while (left <= left_end)
  {
    temp[tmp_pos] = numbers[left];
    left = left + 1;
    tmp_pos = tmp_pos + 1;
  }
  while (mid <= right)
  {
    temp[tmp_pos] = numbers[mid];
    mid = mid + 1;
    tmp_pos = tmp_pos + 1;
  }

  for (i=0; i <= num_elements; i++)
  {
    numbers[right] = temp[right];
    right = right - 1;
  }

}
박영식 (비회원)
    • 글자 크기
매트랩 소스(함수의 magnitude구하기) (by 박영식) quick 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)
위로