메뉴 건너뛰기

app

merge sort

박영식2003.11.05 19:58조회 수 17706댓글 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 조회 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)
위로