簡體   English   中英

以升序對數組排序

[英]Sorting an array in ascending order

所以我現在有了這段代碼。 它可以運行,但是不會按升序對數字數組進行排序,而且我不知道該怎么辦。 我是Java的新手,所以...

import javax.swing.JOptionPane;

public class ThirdClass
{
    public static void main (String args[]){

        int a = 0;
        int b;

        int numbers;
        int length = Integer.parseInt(JOptionPane.showInputDialog (null, "Input set size", JOptionPane.QUESTION_MESSAGE));
        int ctr = 1;
        int num[] = new int[length];

            for(int i = 0; i < length; i++){
            num[i] = Integer.parseInt(JOptionPane.showInputDialog (null, "Enter number " + ctr, JOptionPane.QUESTION_MESSAGE));
                    ctr++;
            }

            for(int i = 0; i < length; i++){
                for(int j = i+1; j < length; j++){
                        if(num[i]<num[j]){
                            a = num[i];
                            num[i] = num[j];
                            num[j] = a;
                        }
                    }
            }

            for(int i = 0; i < length; i++){
            JOptionPane.showMessageDialog (null, "Output: " + num[i] , "Value", JOptionPane.INFORMATION_MESSAGE);
            }
    }
}

您似乎正在嘗試進行冒泡排序,但是您的邏輯有些偏離。 將您的double for循環更改為此:

for (int i=0; i < length; ++i) {
    for (int j=1; j < (length-i); ++j) {
        if (num[j-1] > num[j]){
            a = num[j-1];
            num[j-1] = num[j];
            num[j] = a;
        }
    }
}

您無需更改完整的邏輯。 只需將符號更改為小於或大於以下代碼即可。

for(int i = 0; i < length; i++){
                for(int j = i+1; j < length; j++){
                        if(num[i]>num[j]){
                            a = num[i];
                            num[i] = num[j];
                            num[j] = a;
                        }
                    }
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM