메뉴 건너뛰기

app

merge sort

박영식2003.11.05 19:58조회 수 17804댓글 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 조회 2629
박영식
2005.03.25 조회 2368
박영식
2003.12.25 조회 4187
박영식
2003.12.19 조회 3718
박영식
2003.11.05 조회 17804
박영식
2003.11.05 조회 2538
박영식
2003.11.05 조회 2761
박영식
2003.11.05 조회 2441
박영식
2003.11.05 조회 2480
박영식
2003.11.05 조회 3527
박영식
2002.06.14 조회 2855
박영식
2002.04.18 조회 3648
박영식
2002.04.18 조회 3560
첨부 (0)
위로