Título: Metodos de Ordenamiento en c# Publicado por: alexvem en 4 Agosto 2008, 18:02 pm Insercion Directa
Código: Console.WriteLine("Metodo de insercion directa"); int auxili; int j; for (int i = 0; i < numeros.Length ; i++) { auxili = numeros[i]; j = i - 1; while (j >= 0 && numeros[j] > auxili) { numeros[j + 1] = numeros[j]; j--; } numeros[j + 1] = auxili; } for (int i = 0; i < longitud; i++) Console.WriteLine(" " + numeros[i]); Insercion Binaria Código: int auxiliar; int q; int izqui; int dere; for (int i = 0; i < numeros.Length; i++) { auxiliar = numeros[i]; izqui = 0; dere = i - 1; while (izqui <= dere) { q = ((izqui + dere) / 2); if (auxiliar < numeros[q]) { dere = q - 1; } else { izqui = q + 1; } j = i - 1; while (j >= izqui) { numeros[j + 1] = numeros[j]; j = j - 1; } numeros[izqui] = auxiliar; } } for (int i = 0; i < longitud; i++) Console.WriteLine(" " + numeros[i]); Shell Código: int salto = 0; Quick Sortint sw=0; int auxi = 0; int e=0; salto =longitud /2; while (salto >0) { sw=1; while (sw!=0) { sw=0; e=1; while (e<=(longitud -salto )) { if (numeros [e-1]>numeros [(e-1)+salto ]) { auxi =numeros [(e-1)+salto ]; numeros [(e-1)+salto ]=numeros [e-1]; numeros [(e-1)]=auxi; sw=1; } e++; } } salto =salto /2; } for (int i = 0; i < longitud; i++) Console.WriteLine(" " + numeros[i]); Código: int izquierda,derecha; int pivot, i_det, d_det; i_det = izquierda; d_det = derecha; pivot = numeros[izquierda]; while (izquierda <derecha ) { while ((numeros [derecha ]>=pivot ) &&(izquierda <derecha )) { derecha --; } if (izquierda !=derecha ) { numeros [izquierda]=numeros [derecha ]; izquierda ++; } while ((numeros [izquierda ]<=pivot )&&(izquierda <derecha )) { izquierda ++; } if (izquierda !=derecha ) { numeros [derecha]=numeros [izquierda ]; derecha --; } } numeros[izquierda] = pivot; pivot = izquierda; izquierda = i_det; derecha = d_det; if (izquierda < pivot) { quicksort(izquierda, pivot - 1); } if (derecha > pivot) { quicksort(pivot + 1, derecha); } Burbuja Código: int a,b,t; for(a=1;a<longitud ;a++) for(b=longitud -1;b>=a;b--) { if (numeros [b-1]>numeros [b]) { t=numeros [b-1]; numeros [b-1]=numeros [b]; numeros [b]=t; } } //desplegar arreglo Console.WriteLine("Bubble sort"); for (int i = 0; i < longitud; i++) Console.WriteLine(" " + numeros[i]); Shaker Código: int n = numeros.Length; int izq = 1; int k = n; int aux; int der = n; do { for (int i = der; i >= izq; i--) { if (numeros[i - 1] > numeros[i]) { aux = numeros[i - 1]; numeros[i - 1] = numeros[i]; numeros[i] = aux; k = i; } } izq =k+1; for (int i=izq;i<=der;i++) { if (numeros [i-1]>numeros [i]) { aux=numeros [i-1]; numeros [i-1]=numeros [i]; numeros [i] =aux; k=1; } } der =k-1; } while (der>=izq ); for (int i = 0; i < longitud; i++) Console.WriteLine(" " + numeros[i]); |