Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C]Merge Sort

  1. #1

    [C]Merge Sort

    #include <stdio.h>

    void mergesort(int a[], int left, int right);
    void merge(int a[], int left, int center, int right);

    main()
    {
    int n=8;
    int v[]={ 10, 3, 15, 2, 1, 4, 9, 0};
    mergesort(v, 0, n-1);
    }

    void mergesort(int a[], int left, int right)
    {
    int center;

    if (left<right)
    {
    center = (left+right)/2;
    mergesort(a, left, center);
    mergesort(a, center+1, right);
    merge(a, left, center, right);
    }
    }

    void merge(int a[], int left, int center, int right) {

    int i, j, k;
    int b[10];

    i = left; j = center+1; k = 0;

    while ((i<=center) && (j<=right))
    {
    if (a[i] <= a[j])
    {
    b[k] = a[i];
    i++;
    }
    else
    { b[k] = a[j];
    j++;
    }
    k++;
    }

    while (i<=center)
    {
    b[k] = a[i];
    i++;
    k++;
    }
    while (j<=right)
    {
    b[k] = a[j];
    j++;
    k++;
    }

    for(k=left; k<=right; k++)
    a[k] = b[k-left];
    }


    ciao ragazzi...non ho ben capito quando chjiama "void mergesort" che cosa succede ricorsivamente...

  2. #2
    Su wikipedia viene spiegato bene il funzionamento dell'algoritmo: http://en.wikipedia.org/wiki/Merge_sort
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.