24 Abril 2014, 07:10:14 am

Autor Tema: Metodos de ordenamiento de un arreglo  (Leído 2126 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kiws

  • Me das tu IP?
  • *
  • Mensajes: 20
  • Puntos: +0/-0
  • Sexo: Masculino
  • GEekS RuLes!!!
    • Ver Perfil
Metodos de ordenamiento de un arreglo
« en: 19 Octubre 2009, 03:58:41 am »
aquí les dejo el código de los diferentes métodos de ordenamiento, me los encargaron para una clase y batalle un poco pero di con ellos, en si lo que hace es ordenar un arreglo de 1000 elementos de tipo entero y los imprime en un datagridview, agregue un contador que imprimí las veces que el método compara los números, como verán el quicksort es el que hace menos y el método burbuja muchos mas.

sale espero que les sirva ;D


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace ale
{
    public partial class Form1 : Form
    {
        int cantcambios = 0;
        int[] a = new int[1000];//arreglos tipo entero
        int[] b = new int[1000];
        int[] c=  new int[1000];
        int[] d = new int[1000];
        Random r = new Random();//crea una variable de tipo random
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int x = 0; x < a.Length; x++)
            {
                a['x'] = r.Next(0, 1000);//con un pequeño ciclo el arreglo 'a' llena cada una de sus           posiciones aleatoriamente con numeros de entre 0 y 1000
                b['x'] = a['x'];//iguala los arreglos 'b', 'c', 'd' al contenido del arreglo 'a'
                c['x'] = a['x'];
                d['x'] = a['x'];

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //imprime el arreglo 'a' todo desordenado
            try
            {
                dataGridView1.Rows.Clear();
                for (int z = 0; z < a.Length; z++)
                {
                    dataGridView1.Rows.Add(z, a[z]);

                }
            }
            catch (Exception error)
            {

                MessageBox.Show("ya valio" + error);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //metodo de ordenamiento BURBUJA
            int temporal = 0;
            int cont = 0;
            for (int x = 0; x < a.Length; x++)
            {
                for (int z = 0; z < a.Length; z++)
                {
                    cont++;
                    if (a['x'] < a[z])
                    {
                        
                        temporal = a['x'];
                        a['x'] = a[z];
                        a[z] = temporal;
                    }
                }
                label9.Text = cont.ToString();
            }
            for (int z = 0; z < a.Length; z++)
                    {
                        dataGridView2.Rows.Add(z, a[z]);
                    }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //metodo de ordenamiento SHELL
            int i, j, increment, temp,comparaciones=0;

            increment = 3;

            while (increment > 0)
            {
                for (i = 0; i < c.Length; i++)
                {
                    comparaciones++;
                    j = i;
                    temp = c;

                    while ((j >= increment) && (c[j - increment] > temp))
                    {
                        //comparaciones++;
                        c[j] = c[j - increment];
                        j = j - increment;
                    }
                    //comparaciones++;
                    c[j] = temp;
                }

                if (increment / 2 != 0)
                {
                    increment = increment / 2;
                }
                else if (increment == 1)
                {
                    increment = 0;
                }
                else
                {
                    increment = 1;
                }
            }
            label12.Text = comparaciones.ToString();
            for (int z = 0; z < b.Length; z++)
            {
                dataGridView4.Rows.Add(z, c[z]);
            }


        }

        private void button3_Click(object sender, EventArgs e)
        {
            //metodo de ordenamiento INSERT
            int valor=0;
            int j=0;
            int i = 0;
            int comparaciones = 0;
            for (i = 0; i < b.Length; i++)
            {
                valor = b;
                j = i - 1;
                while (j >= 0 && b[j] > valor)
                {
                    comparaciones++;
                    b[j + 1] = b[j];
                    j = j - 1;
                }
                //comparaciones++;
                b[j + 1] = valor;
              
            }
            label11.Text = comparaciones.ToString();
        for (int z = 0; z < b.Length; z++)
        {
            dataGridView3.Rows.Add(z, b[z]);
        }
        }

        private void button5_Click(object sender, EventArgs e)
        {  
            //metodo QUICKSORT
            int tamañoarreglo = 100;
            quicksort(d, 0, tamañoarreglo - 1);
            for (int u = 0; u < tamañoarreglo; u++)
                dataGridView5.Rows.Add(u, d);
            label10.Text =cantcambios.ToString();
        }
        private void quicksort(int[]d, int primero, int ultimo)
        {
            //continuacion del metodo QUICKSORT
            int i, j, centro;
            double pivote;

            centro = (primero + ultimo) / 2;
            pivote = d[centro];
            i = primero;
            j = ultimo;

            do
            {
                while (d < pivote) i++;
                while (d[j] > pivote) j--;

                if (i <= j)
                {
                    int temporal = 0;
                    temporal = d;
                    d = d[j];
                    d[j] = temporal;
                    cantcambios = cantcambios + 1;
                    i++;
                    j--;

                }
            } while (i <= j);

            if (primero < j)
            {
                quicksort(d, primero, j);
            }
            if (i < ultimo)
            {
                quicksort(d, i, ultimo);
            }
            
        }
      
        
        }
    }

    
« última modificación: 19 Octubre 2009, 04:07:20 am por Kiws »


  Asunto / Iniciado por Respuestas / Vistas Último mensaje
question
[C][Ayuda]Metodos de Ordenamiento para Listas

Iniciado por quickray

0 Respuestas
314 Vistas
Último mensaje 22 Enero 2013, 12:52:31 pm
por quickray
question
asignar direccion a una posicion de arreglo??? (Arreglo de direcciones???)

Iniciado por ralymontes

10 Respuestas
1404 Vistas
Último mensaje 23 Mayo 2010, 02:15:52 am
por ralymontes
xx
Métodos de infección, Métodos para hackear, Métodos para que no te pillen

Iniciado por RaKi0N

0 Respuestas
1772 Vistas
Último mensaje 21 Junio 2007, 02:45:16 pm
por RaKi0N
xx
Ordenamiento

Iniciado por diablokira

2 Respuestas
747 Vistas
Último mensaje 15 Enero 2011, 03:14:57 am
por @Aps
question
ordenamiento de una matriz

Iniciado por diablokira

3 Respuestas
1853 Vistas
Último mensaje 03 Febrero 2010, 03:44:19 am
por diablokira
xx
Ordenamiento en struct.

Iniciado por glbmexico

2 Respuestas
508 Vistas
Último mensaje 09 Noviembre 2011, 08:10:55 pm
por glbmexico
question
[VBS] Ordenamiento de subs

Iniciado por klaine

0 Respuestas
823 Vistas
Último mensaje 11 Diciembre 2010, 12:59:42 am
por klaine
question
Ayuda con ordenamiento...

Iniciado por JaAViEr

2 Respuestas
489 Vistas
Último mensaje 15 Mayo 2010, 10:13:23 am
por JaAViEr