Heapsort: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Gean (discussão | contribs)
m Desfeita a edição 43742546 de 187.114.35.253
Etiquetas: Remoção considerável de conteúdo Editor Visual
Linha 238:
</syntaxhighlight>
 
=== Código em C# ===
=== Código em Java (5.00rasec ) ===
<syntaxhighlight lang="csharp">
 
public void heapSort(int[] v)
{
buildMaxHeap(v);
int n = v.Length;
 
for (int i = v.Length - 1; i > 0; i--)
{
swap(v, i, 0);
maxHeapify(v, 0, --n);
}
}
private static void buildMaxHeap(int[] v)
{
for (int i = v.Length / 2 - 1; i >= 0; i--)
maxHeapify(v, i, v.Length);
}
private static void maxHeapify(int[] v, int pos, int n)
{
int max = 2 * pos + 1, right = max + 1;
if (max < n)
{
if (right < n && v[max] < v[right])
max = right;
if (v[max] > v[pos])
{
swap(v, max, pos);
maxHeapify(v, max, n);
}
}
}
 
public static void swap(int[] v, int j, int aposJ)
{
int aux = v[j];
v[j] = v[aposJ];
v[aposJ] = aux;
}
</syntaxhighlight>
 
=== Código em Java ===
<syntaxhighlight lang="java">
public static void heapSort(int[] v)
{
buildMaxHeap(v);
int n = v.length;
 
for (int i = v.length - 1; i > 0; i--)
{
swap(v, i , 0);
maxHeapify(v, 0, --n);
}
}
private static void buildMaxHeap(int[] v)
{
for (int i = v.length/2 - 1; i >= 0; i--)
maxHeapify(v, i , v. length );
}
private static void maxHeapify(int[] v, int pos, int n)
{
int maxi;
int l = 2 * pos;
int right = 2 * pos + 1;
if ( (l < n) && (v[l] > v[pos]) )
{
maxi = l;
}
else
{
maxi = pos;
}
if (right < n && v[right] > v[maxi])
{
maxi = right;
}
if (maxi != pos)
{
swap(v, pos, maxi);
maxHeapify(v, maxi, n);
}
}
 
public static void swap ( int[ ] v, int j, int aposJ )
{
int aux = v [ j ];
v [ j ] = v [ aposJ ];
v [ aposJ ] = aux;
}
</syntaxhighlight>
 
=== Código em Java (5.0) ===
<syntaxhighlight lang="java5">
public static <T extends Comparable<? super T>> void heapSort(T[] v) {