首页 > 解决方案 > 无法按升序对数组进行排序

问题描述

我刚刚开始编程...我正在尝试按升序对数组进行排序..但没有得到想要的结果,请指出我做错了什么..

public static void main(String[] args) {

    int count, temp;

    // User inputs the array size
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter number of elements you want in the array: ");
    count = scan.nextInt();

    int num[] = new int[count];
    System.out.println("Enter array elements:");
    for (int i = 0; i < count; i++) {
        num[i] = scan.nextInt();
    }
    scan.close();
    {
        int i = 0;
        while (i <= count) {
            for (int j = i + 1; j < count; j++) {
                if (num[i] > num[j]) {
                    temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                    i++;
                }
            }

        }
    }
    System.out.print("Array Elements in Ascending Order: ");
    for (int i = 0; i < count - 1; i++) {
        System.out.print(num[i] + ", ");
    }
    System.out.print(num[count - 1]);

}

标签: javaalgorithmsorting

解决方案


你应该在 for 循环之外增加 i 或者你可以摆脱 while 循环并使用 for 循环,你可以找到下面的代码:

import java.util.Scanner;
public class Ascending _Order 
{
    public static void main(String[] args) 
    {
        int n, temp;
        Scanner s = new Scanner(System.in);
        System.out.print("Enter no. of elements you want in array:");
        n = s.nextInt();
        int a[] = new int[n];
        System.out.println("Enter all the elements:");
        for (int i = 0; i < n; i++) 
        {
            a[i] = s.nextInt();
        }
        for (int i = 0; i < n; i++) 
        {
            for (int j = i + 1; j < n; j++) 
            {
                if (a[i] > a[j]) 
                {
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        System.out.print("Ascending Order:");
        for (int i = 0; i < n - 1; i++) 
        {
            System.out.print(a[i] + ",");
        }
        System.out.print(a[n - 1]);
    }
}

输出:

输入编号。你想要在数组中的元素:5

输入所有元素:4 3 2 6 1

升序:1,2,3,4,6

或者您可以使用方法 sort :

import java.util.Scanner;
import java.util.Arrays;

public class Ascending_Order {
    public static void main(String[] args) {
        int n, temp;
        Scanner s = new Scanner(System.in);
        System.out.print("Enter no. of elements you want in array:");
        n = s.nextInt();
        int a[] = new int[n];
        System.out.println("Enter all the elements:");
        for (int i = 0; i < n; i++) {
            a[i] = s.nextInt();
        }
        Arrays.sort(a);
        System.out.print("Ascending Order:");
        for (int i = 0; i < n - 1; i++) {
            System.out.print(a[i] + ",");
        }
        System.out.print(a[n - 1]);
    }
}

输出:

输入编号。你想要在数组中的元素:5

输入所有元素:4 3 2 6 1

升序:1,2,3,4,6


推荐阅读