메뉴 건너뛰기

app

merge sort

박영식2003.11.05 19:58조회 수 17768댓글 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 조회 2596
박영식
2005.03.25 조회 2331
박영식
2003.12.25 조회 4140
박영식
2003.12.19 조회 3683
박영식
2003.11.05 조회 17768
박영식
2003.11.05 조회 2497
박영식
2003.11.05 조회 2719
박영식
2003.11.05 조회 2398
박영식
2003.11.05 조회 2438
박영식
2003.11.05 조회 3479
박영식
2002.06.14 조회 2817
박영식
2002.04.18 조회 3612
박영식
2002.04.18 조회 3517
첨부 (0)
위로