publico mi tarea de ordenamiento con menu que me tomo un tiempo::: si lo mejorarian estaria ok. ojala que les sirva:
********codigo***********
using System; //using System.Collections.Generic; uso en 2005 using System.Text;
namespace menus_ex { class Program { static void asburbuja(int []le,int t)//burbuja ascendente {int temp, nb = 0; for (int i = 0; i < t; i++) {for (int j = i; j < t; j++) {nb++; if (le > le[j]) {temp = le; le = le[j]; le[j] = temp; } } } } static void desburbuja(int []le,int t)//burbuja descendente {int temp, nb = 0; for (int i = 0; i < t; i++) {for (int j = i; j < t; j++) {nb++; if (le < le[j]) {temp = le; le = le[j]; le[j] = temp; } } } } static void selecionas(int []le,int t)//selecion ascendente {int menor; for (int i = 0; i < t; i++) { menor = i; for (int j = i + 1; j < t; j++) if (le[j] < le[menor]) menor = j; int auxi = le; le = le[menor]; le[menor] = auxi; } } static void seleciondes(int []le,int t)//selecion descendente {int menor; for (int i = 0; i < t; i++) { menor = i; for (int j = i + 1; j < t; j++) if (le[j] > le[menor]) menor = j; int auxi = le; le = le[menor]; le[menor] = auxi; } } static void insercionas(int []le,int t)//intersecion ascendente {int w, ij, auxis; bool encontradositio; for (w = 1; w < t; w++) { auxis = le[w]; ij = w - 1; encontradositio = false; while (ij >= 0 && !encontradositio) if (le[ij] > auxis) { le[ij + 1] = le[ij]; ij--; } else encontradositio = true; le[ij + 1] = auxis; } } static void inserciondes(int []le,int t) //intersecion descendente { int w, ij, auxis; bool encontradositio; for (w = 1; w < t; w++) { auxis = le[w]; ij = w - 1; encontradositio = false; while (ij >= 0 && !encontradositio) if (le[ij] < auxis) { le[ij + 1] = le[ij]; ij--; } else encontradositio = true; le[ij + 1] = auxis; } } static void shell(int []le,int t) //shell ascendente { int il, jl, kl, salto; salto = t / 2; while (salto > 0) { for (il = salto; il < t; il++) { jl = il - salto; while (jl >= 0) { kl = jl + salto; if (le[jl] <= le[kl]) jl = -1; else { int auvi = le[jl]; le[jl] = le[kl]; le[kl] = auvi; jl -= salto; } } } salto /= 2; } } static void shell1(int []le,int t) //shell descendente { int il, jl, kl, salto; salto = t / 2; while (salto > 0) { for (il = salto; il < t; il++) { jl = il - salto; while (jl >= 0) { kl = jl + salto; if (le[jl] >= le[kl]) jl = -1; else { int auvi = le[jl]; le[jl] = le[kl]; le[kl] = auvi; jl -= salto; }
} } salto /= 2; } } public static void quicksort(int[] le, int iz, int de) //quickshort ascendente { int i = iz; int j = de; int pivote = le[(iz + de) / 2]; do { while (le < pivote) { i++; } while (le[j] > pivote) { j--; } if (i <= j) { int auxi = le; le = le[j]; le[j] = auxi; i++; j--; } } while (i <= j); if (j > iz) quicksort(le, iz, j); if (i < de) quicksort(le, i, de); } public static void quicksort2(int[] le, int iz1, int de1) //quickshort descendente { int i = iz1; int j = de1; int pivote = le[(iz1 + de1) / 2]; do { while (le > pivote) { i++; } while (le[j] < pivote) { j--; } if (i <= j) { int auxi = le; le = le[j]; le[j] = auxi; i++; j--; } } while (i <= j); if (j > iz1) quicksort2(le, iz1, j); if (i < de1) quicksort2(le, i, de1); } static void recorrer(int[] le,int t) { for (int i = 0; i < t; i++) Console.Write(le + " "); Console.WriteLine(); } static void Main(string[] args) { int t; Console.WriteLine("--------- MENU ARRAYS---------"); Console.WriteLine("********llenado******** "); Console.WriteLine("ingrese tamaño"); t = int.Parse(Console.ReadLine()); int[] le = new int[t]; for (int i = 0; i < t; i++) { Console.WriteLine("ingrese [{0}] valor", i + 1); le = int.Parse(Console.ReadLine()); } Console.WriteLine("--------- MENU ---------"); Console.WriteLine("1. burbuja"); Console.WriteLine("2. seleccion"); Console.WriteLine("3. insercion"); Console.WriteLine("4. shell"); Console.WriteLine("5. quicksort"); int a = int.Parse(Console.ReadLine()); switch (a) { case 1: { Console.WriteLine("ascendente o descendente [a/d] "); string r=Console.ReadLine(); if (r == "a") { asburbuja(le,t); recorrer(le,t); } if (r == "d") { desburbuja(le, t); recorrer(le, t); } break; } case 2: { Console.WriteLine("ascendente o descendente [a/d] "); string r = Console.ReadLine(); if (r == "a") { selecionas(le, t); recorrer(le, t); } if (r == "d") { seleciondes(le, t); recorrer(le, t); } break; } case 3: { Console.WriteLine("ascendente o descendente [a/d] "); string r = Console.ReadLine(); if (r == "a") { insercionas(le, t); recorrer(le, t); } if (r == "d") { inserciondes(le, t); recorrer(le, t); } break; } case 4: { Console.WriteLine("ascendente o descendente [a/d] "); string r = Console.ReadLine(); if (r == "a") { shell(le, t); recorrer(le, t); } if (r == "d") { shell1(le, t); recorrer(le, t); } break; } case 5: { Console.WriteLine("ascendente o descendente [a/d] "); string r = Console.ReadLine(); if (r == "a") { quicksort(le, 0, le.Length - 1); recorrer(le, t); } if (r == "d") { quicksort2(le, 0, le.Length - 1); recorrer(le, t); } break; } } //fin Main } } }
|