Bubble sort di stringhe

di il
2 risposte

Bubble sort di stringhe

Salve a tutti. Ho creato questo piccolo programmino che esegue (o meglio dovrebbe) il riordinamento dei alcune nomi digitati in input... Il problema è che non esegue il riodinamento degli elementi e non capisco il perchè...

p.s. Il programma è stato realizzato con interfaccia grafica(GUI).
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ordinamentostringa
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        const int nmax = 100; //costante valore massimo cella array
        int N = 0;
        string[] vnomi = new string[nmax]; //array che contiene i nomi

        void carica()
        {
            N=lstinput.Items.Count; //numero di elementi

            for (int i = 0; i < N; i++)
                vnomi[i] = lstinput.Items[i].ToString();

        }//fine del sottoprogramma per caricare array


       

        private void button1_Click(object sender, EventArgs e)
        {
            string input = "";

            if (txtinserisci.Text.Length > 0)
            {
                input = txtinserisci.Text.ToString();
                lstinput.Items.Add(input);
                txtinserisci.Clear();
            }

            else
                MessageBox.Show("Campo non compilato!");

        }//fine di caricare il voto

        private void btnelaborazione_Click(object sender, EventArgs e)
        {
            int i=0,j=0;
            string deposito="";

            carica(); //carica i dati con void

            N = vnomi.Length; //lunghezza della listbox

            //ciclo for per ordinare in ordine alfabetico le stringhe in input

            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N - 1; j++)
                {
                    if (String.Compare(vnomi[i], vnomi[j + 1]) > 0)
                    {
                        deposito = vnomi[i];
                        vnomi[i] = vnomi[j + 1];
                        vnomi[j + 1] = deposito;

                    }//end if dello scambio degli elementi
                }
            }


            for (int k = 0; k < N; k++)
            {
                lstordinato.Items.Add(vnomi[k]);
            }
          
        }//fine elaborazione
    }
  }
Grazie in anticipo

2 Risposte

  • Re: Bubble sort di stringhe

    Togli questa linea
    
        N = vnomi.Length; //lunghezza della listbox
    
    e modifica il sort così
    
                bool flsort = true;
                while (flsort)
                {
                    flsort = false;
    
                    for (i = 0; i < N - 1; i++)
                    {
                        if (String.Compare(vnomi[i], vnomi[i + 1]) > 0)
                        {
                            flsort = true;
    
                            deposito = vnomi[i];
                            vnomi[i] = vnomi[i + 1];
                            vnomi[i + 1] = deposito;
                        } 
                    }
                }
    
  • Re: Bubble sort di stringhe

    Grazie!!!
Devi accedere o registrarti per scrivere nel forum
2 risposte