首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java -选择排序

java -选择排序
EN

Stack Overflow用户
提问于 2021-09-28 15:13:36
回答 3查看 72关注 0票数 0

我希望实现一个选择对齐,接收10个整数并按升序组织它们。

然而,当我的代码被操作时,其他事情正常工作,但是只有第一个整数没有对齐。

请告诉我如何修改密码。

代码语言:javascript
复制
public static void sort(int[] array) {
    Scanner sc = new Scanner(System.in);
    System.out.println("put the int");
    
    for (int i =0;i <array.length;i++) {
        System.out.print((i+1)+": ");
    int n = sc.nextInt();
        array[i] = n;
        for (int j = 1; j < array.length;j++) {
            if (array[i] < array[j]) {
                
                int temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
    
    for (int a=0; a< array.length; a++) {
        System.out.print(array[a]+" ");

    }
}
public static void main(String[] args) {
    int[] my_array = {0,0,0,0,0,0,0,0,0,0};
    sort(my_array);
}

}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-28 15:16:14

你应该设置

代码语言:javascript
复制
int j = 0

在内心里

票数 0
EN

Stack Overflow用户

发布于 2021-09-28 15:38:49

如果您想实现自我排序

  • int j = i+1初始化内部for
  • 如果arrayi大于arrayj,则更改数字,而不是相反
代码语言:javascript
复制
        for (int i =0;i <array.length;i++) {
            int minValue = array[i];

            for (int j = i +1; j < array.length;j++) {
                if (array[i] > array[j]) {
                    
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        
        for (int a=0; a< array.length; a++) {
            System.out.print(array[a]+" ");
        }
票数 0
EN

Stack Overflow用户

发布于 2021-09-28 15:57:46

首先需要读取整个数组,然后才能对其进行排序。而且,我不认为您的算法是真正的选择类型。在选择排序中,必须在未排序数据数组中找到最小值。然后你交换。你的算法不能做到这一点。

为了说明这一点,我将代码分解为函数。

代码语言:javascript
复制
// Find the minimum value in the array, starting the search at "start"
// Returns the index of the minimum
static int findMinIndex(int[] array, int start)
{
    int min = array[start];
    int minIndex = start;
    for (int i = start + 1; i < array.length; i++) {
        if (array[i] < min)  {
            min = array[i];
            minIndex = i;
        }
    }
    return minIndex;
}

// Swap 2 elements of an array
static void swap(int[] array, int index1, int index2)
{
    int temp = array[index1];
    array[index1] = array[index2];
    array[index2] = temp;
}

// Selection sort the array, ascending
static void selectionSort(int[] array)
{
    for (int i = 0; i < array.length; i++) {
        // First find the minimum from i to the end of the array...
        int minIndex = findMinIndex(array, i);
        // ...then swap
        if (minIndex != i) {
            swap(array, i, minIndex);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69364329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档