메뉴 건너뛰기

app

merge sort

박영식2003.11.05 19:58조회 수 17755댓글 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 조회 2584
박영식
2005.03.25 조회 2318
박영식
2003.12.25 조회 4128
박영식
2003.12.19 조회 3672
박영식
2003.11.05 조회 17755
박영식
2003.11.05 조회 2485
박영식
2003.11.05 조회 2698
박영식
2003.11.05 조회 2390
박영식
2003.11.05 조회 2427
박영식
2003.11.05 조회 3458
박영식
2002.06.14 조회 2806
박영식
2002.04.18 조회 3599
박영식
2002.04.18 조회 3500
첨부 (0)
위로