带有数组的冒泡排序方法显示不正确

时间:2014-04-03 05:50:52

标签: java arrays sorting

我是Java的新手,所以我对"冒泡排序方法"有问题。 首先,到目前为止我的代码是:

    import javax.swing.*;

public class arreglo_unidimensional_con_menu
{
    public static void main(String args[])
    {
        int original[];
        int n = 0, r = 0, aux = 0, num = 0, help = 0, indice = 0, posicion = 0, orden = 0;
        String op;
        boolean flag = false, band = false;
        n = Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca el tamaño del Arreglo", "Inicialización", JOptionPane.QUESTION_MESSAGE));
        original = new int[n];
        do
        {

            op = (JOptionPane.showInputDialog(null, "Selecciona una opción: \n a) Insertar\n b) Mostrar\n c) Ordenar\n d) Buscar\n s) Salir", "Menú del Arreglo", JOptionPane.INFORMATION_MESSAGE).toUpperCase());
            switch(op)
            {
                case "A":
                    if(indice < n)
                    {
                        original[indice]=Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca un número: ", "Entrada de Datos", JOptionPane.QUESTION_MESSAGE));
                        indice++;
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "El Arreglo ya NO tiene Espacio Disponible");
                    }
                    break;
                case "B":
                    System.out.println("Arreglo: \n");
                    for(int ctrl = 0; ctrl < indice; ctrl++)
                    {
                        System.out.print(original[ctrl]+" ");
                    }
                    System.out.println("\n");
                    break;
                case "C":
                    while(flag == false)
                    {
                        flag = true;
                        if(indice < n)
                        {
                            for(int ctrl = 0; ctrl < indice-1 && ctrl < n-1; ctrl++)
                            {
                                if(original[ctrl] > original[ctrl+1])
                                {
                                    help = original[ctrl];
                                    original[ctrl] = original[ctrl+1];
                                    original[ctrl+1] = help;
                                    flag = false;
                                }
                            }
                            break;
                        }
                        else if(indice == n)
                        {
                            for(int ctrl = 0; ctrl < n-1; ctrl++)
                            {
                                if(original[ctrl] > original[ctrl+1])
                                {
                                    /*help = original[ctrl+1];
                                    original[ctrl+1] = original[ctrl];
                                    original[ctrl] = help;*/

                                    help = original[ctrl];
                                    original[ctrl] = original[ctrl+1];
                                    original[ctrl+1] = help;
                                    flag = false;
                                }
                            }
                        }
                    }
                break;
                case "D":
                    num = Integer.parseInt(JOptionPane.showInputDialog("Introduzca el número a buscar: "));
                    while(band == false)
                    {
                        for(int ctrl = 0; ctrl < n; ctrl++)
                        {
                            if(original[ctrl] == num)
                            {
                                band = true;
                                posicion = ctrl;
                            }
                        }
                        if(band == true)
                        {
                            JOptionPane.showMessageDialog(null, "Tú número "+num+" si está en el Arreglo y ocupa el índice: "+posicion);
                            band = false;
                            break;
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "Tú número "+num+" no está en el Arreglo");
                            break;
                        }
                    }
                    break;
                case "S":
                    System.out.print("\n");
                    System.exit(0);
                default:
                    JOptionPane.showMessageDialog(null, "Opción Incorrecta", "FATAL ERROR", JOptionPane.WARNING_MESSAGE);
            }
        }while(aux < n);
    }
}

该程序的目的是为数组创建一个菜单,用于订购,搜索和显示。 但重要的是&#34;冒泡排序方法&#34;哪个选项C 对我来说效果不好,我需要添加&#34; N&#34; int值,但我不必填充整个数组,例如:

Array [value] = 5 然后用户逐个介绍数组的元素:

3 2 1 ...但阵列无法满员。

所以&#34;冒泡排序&#34;必须回报我:

1 2 3 ...所以当我引入一个新元素(如零)时,它可能会按顺序排列。

0 1 2 3

我做错了什么? 对不起我的英语,我不是来自美国,但我真的需要你的帮助。

0 个答案:

没有答案