User Tools

Site Tools


algorithms

This is an old revision of the document!


Table of Contents

Algorithms

A small section about some algorithms I collected and wrote.

Sorting

Heap Sort

package ch.ethz.da.vorlesung;
 
/**
 * Heap sort according to lecture.
 * 
 * @author Moritz Hoffmann
 * 
 */
public class Heapsort {
 
    private final int[] data;
 
    public Heapsort(int[] data) {
        this.data = data;
    }
 
    public void sort() {
        final int length = data.length;
        for (int i = length / 2; i >= 0; i--) {
            reorder(i, length);
        }
        for (int i = data.length - 1; i > 0;) {
            int z = data[0];
            data[0] = data[i];
            data[i] = z;
            reorder(0, --i);
        }
    }
 
    private void reorder(int i, int length) {
        int j = i << 1;
        while (true) {
            j = i << 1;
            if (j >= length) {
                return;
            }
            if (data[j + 1] > data[j]) {
                j++;
            }
            if (data[i] < data[j]) {
                int z = data[i];
                data[i] = data[j];
                data[j] = z;
                i = j;
            } else
                return;
        }
    }
}
algorithms.1236369719.txt.gz · Last modified: 2009/03/06 21:01 by moritz

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki