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

选择排序
EN

Stack Overflow用户
提问于 2014-08-30 21:48:14
回答 2查看 62关注 0票数 0

问题是,当数据排序时,它会加倍:

数据: 20,5,9,8,7

输出为:

代码语言:javascript
复制
  20, 5, 9, 8, 7
  5, 20, 9, 8 ,7
  5, 20, 9, 8 ,7
  5, 20, 9, 8 ,7
  5, 20, 9, 8 ,7
  5, 9, 20, 8 ,7
  5, 8, 20, 9 ,7
  5, 7, 20, 8 ,7
  5, 7, 9, 20 ,7
  5, 7, 8, 20 ,7
  5, 7, 8, 9 ,20

5,20,9,8 ,7部分重复了4次,如何删除?

代码语言:javascript
复制
for(i=0; i<r; i++)
{
  System.out.print(data[i]+"\t");
}
  System.out.print("\n");
  for(i=0; i<size; i++)
{
    smallest=i;
    for(j=i+1; j<size; j++)
    {
        if(data[i] > data[j] )
        {
            temp = data[j];
            data[j] = data[smallest];
            data[smallest] = temp;
        }

            for(k=0; k<size; k++)
            System.out.print(data[k]+"\t");
            System.out.print("\n");
         }

    }
EN

回答 2

Stack Overflow用户

发布于 2014-08-30 21:52:22

出现520987是因为一旦您将5放置在点0中,它就不再需要被交换。5是数组中最小的一项,因此它只需要检查数组中的其他元素以确保。删除这些迭代的唯一方法是更改排序方法

票数 0
EN

Stack Overflow用户

发布于 2014-08-30 22:04:56

错误代码显示数据:U删除k的循环而不删除j的循环

代码语言:javascript
复制
for(i=0; i<r; i++)
{
  System.out.print(data[i]+"\t");
}
  System.out.print("\n");
  for(i=0; i<size; i++)
{
    smallest=i;
    for(j=i+1; j<size; j++)
    {
        if(data[i] > data[j] )
        {
            temp = data[j];
            data[j] = data[smallest];
            data[smallest] = temp;
        }
   }
   for(k=0; k<size; k++)
   {
         System.out.print(data[k]+"\t");
         System.out.print("\n");
   }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25583042

复制
相关文章

相似问题

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