MERGESoRT in C/C++

Dieses Thema im Forum "Programmieren" wurde erstellt von Tom_D20, 26. September 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Tom_D20

    Tom_D20 Byte

    Registriert seit:
    9. Mai 2003
    Beiträge:
    59
    Hab viel gesucht und leider nix gefunden bei Google wird viel angeboten meist aber in anderen Programmiersprachen :(

    Und wenn was ich C/C++ da ist Funzt es nicht :/ :heul:


    Wollte mal Fragen ob jemand sowas da hat!? :confused:

    PS:

    Vielleicht kann mir jemand helfen und Quellen nennen,wo ich es Kopieren/Studieren kann :) :bet:
     
  2. specialist7

    specialist7 Kbyte

    Registriert seit:
    29. Juli 2002
    Beiträge:
    490
    Code:
    //mergesort
    void 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 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;
    
      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;
      }
    }
    
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen