7. Februar 2012  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!

Shell Sort (Sortieren von grossen Datenmengen)

von shark,  15.04.2001 21:53:44  (5 votes) Kommentare (2)  [vote]
Der Shell Sort Algorithmus ist die bevorzugte Methode für das Sortieren. Dieser Algorithmus ist nicht der komplexeste und hat denoch eine akzeptable Laufzeit, selbst für relativ grosse Datenmengen. Wir mussten bezüglich der Implementierung des Shell Sort's einen Trick anwenden. Bevor der Sortieralgorithmus durchlaufen wird, werden die Feldelemente in einem temporären Feld zwischengespeichert. Der Algorithmus wird auf die Elemente dieses temporären Feldes angewendet. Nach dem Sortieren werden die Feldelemente in das als Parameter übergebene Feld zurückgespeichert. Wir kopieren die Feldelemente um, weil die Indexgrenzen eines Feldes von 0-n laufen und wir ausserhalb der Methode mit Standardfeldern arbeiten möchten. Der Sortieralgorithmus ist auch nicht für Felder die mit 0 beginnen ausgelegt worden (siehe h /= 3).
<%@ page language= "java" contentType="text/html"%>
<%@ page import  = "java.util.*"                %>
<html>
<head>
</head>
<body>
<%!
/**
    Methode    : ShellSort
    Beschreibung: Methode zum Sortieren von ganzzahligen Werten   
    Parameter  :
                  nValues      -- Feld mit ganzzahligen Werten
                  nCountValues -- Anzahl der Werte
*/           
void ShellSort(int nValues[], int nCountValues)
{
  int i, h, j, v = 0;
  int nTempValues[] = new int[nCountValues + 1];
 
  // Werte in ein temporaeres Feld umkopieren
  for(int x = 1; x <= nCountValues; x++)
    nTempValues[x] = nValues[x-1];

  // Shell Sort Algorithmus
  for(h = 1; h <= nCountValues / 9; h = 3 * h + 1);
  for(; h > 0; h /= 3)
  { 
    for(i = h + 1; i <= nCountValues; i++)
    {
      v= nTempValues[i];
      j = i;
      while((j > h) && (nTempValues[j-h] > v))
      {
        nTempValues[j] = nTempValues[j-h];
        j -= h;
      }
      nTempValues[j] = v;
    }
  }

  // Werte zurueck kopieren
  for(int x = 0; x < nCountValues; x++)
    nValues[x] = nTempValues[x+1];
}
%>

<%
  final int MAX_VALUE= 32;
  int nValues[]      = new int[MAX_VALUE]; 
  Random oRandomValue= new Random();
%>
  <b><u>Shell Sort Algorithmus zum Sortieren von ganzzahligen Werten</u></b><br><br>
  Unsortierte Werte:<br>
<%
  for(int i = 0; i < MAX_VALUE; i++)
  {
    nValues[i] = oRandomValue.nextInt(32);
%>
    <%= nValues[i] %>
<%   
  } 

  // Werte sortieren
  ShellSort(nValues, MAX_VALUE);
%>
  <br>Sortierte Werte:<br>
<%
  for(int j = 0; j < MAX_VALUE; j++)
  { 
%>
  <%= nValues[j] %>
<%   
  }   
%>
</body>
</html>

<< zurück


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.