Sonntag, 10. April 2011

Gnomesort in Java

Hier eine Implementierung von Gnomesort:

package at.ande.sorting.gnomesort;

import java.util.ArrayList;

public class GnomeSort {
 
 ArrayList list;

 public ArrayList start(ArrayList arraylist) {
  list = arraylist;
  sort();
  return list;
 }
 
 public void sort(){
  int right = 1;
  int left = 0;
  while (right != list.size()){
   if (list.get(left) <= list.get(right)){
    right = right + 1;
    left = left + 1;
   } else {
    int temp = list.get(left);
    list.set(left, list.get(right));
    list.set(right, temp);
    if(left != 0){
     left = left -1;
     right = right - 1;
    }
   }
  }
 }
}


Das Laufzeitverhalten ist nicht gerade überzeugend:

List Area: 0 - 999
List Numbers: 100000
Unsorted List:
-Iterative Quicksort: 135 ms
-Bubblesort: 43729 ms
-GnomeSort: 70638 ms
Sorted List:
-Iterative Quicksort: 1767 ms
-Bubblesort: 3 ms
-GnomeSort: 12 ms

Links:
Wikiartikel zu Gnomesort

Keine Kommentare:

Kommentar veröffentlichen