加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组a [i]按降序打印,但我的逻辑是升序

发布时间:2020-12-16 10:25:43 所属栏目:百科 来源:网络整理
导读:你能告诉我为什么我总是按降序排列a [i]吗?请帮忙. for(i=0;i10;i++) { for (j=0;j10;j++) { if(a[i]=a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } }} 解决方法 问题是你的排序运行两个完整的循环,比较所有i和j对,包括i大于j的那些(此时你不应该交换项目).
你能告诉我为什么我总是按降序排列a [i]吗?请帮忙.

for(i=0;i<10;i++)  
{    
    for (j=0;j<10;j++)
    {   
       if(a[i]>=a[j])
       { 
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
       }
    }
}

解决方法

问题是你的排序运行两个完整的循环,比较所有i和j对,包括i大于j的那些(此时你不应该交换项目).为了使选择排序*起作用,它需要仅从数组的未排序部分中选择其交换候选.

以下是如何修复您的实现:

for(i=0;i<10-1;i++) // You do not need to touch the last element,so end at 10-1
{    
    for (j=i+1;j<10;j++) // Make it j = i+1
    {   
       if(a[i] > a[j]) // >,not >= : no need to swap when two items are equal
       { 
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
       }
    }
}

?* Selection Sort是您正在实施的排序算法的奇特名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读