| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1782 人关注过本帖
标题:含有相等数据的一维数组排序 相等的数据也占据排序号,怎么排呢?
取消只看楼主 加入收藏
xuanyz11
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-1-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
含有相等数据的一维数组排序 相等的数据也占据排序号,怎么排呢?
含有相等数据的一维数组排序 相等的数据也占据排序号
如:1 5 2 1 4
按从小到大排序 应为 1 1 2 4 5
在原数组中的标号顺序应为:1 4 3 5 2
,该怎么实现呢?

测试程序如下:不太完善,没有将相等的数据排上序号,
如输入:1 5 2 1 4
按从小到大排序输出结果为 1 1 2 4 5(正确)
输出在原数组中的标号顺序为:1 1 3 5 2(不正确)

应该怎么修改呢?
或者别的思路也可以!
谢谢了


// 用C语言对一维数组排序,并输出原来的位置


#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
    float a[N],b[N],temp;
    int i,j,c[N];
    for(i=0;i<N;i++)
       {//输入数组,并用b保存数组a的值
           scanf("%5f",&a[i]);
           b[i]=a[i];
       }

    for(i=0;i<N-1;i++)//对a从小到大冒泡排序
           for(j=0;j<N-i-1;j++)
           {
            if(a[j]>a[j+1])
              {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
              }
           }
         
              
    for(i=0;i<N;i++)//输出排序后的a
        printf("%5.2f ",a[i]);
        printf("\n");
         
    for(i=0;i<N;i++)//遍历找出以前的位置 ,如果以前的数组中有相等的数呢?
        for(j=0;j<N;j++)
        {
            if(a[i]==b[j])
            {
                c[i]=j;
              break;//跳出本层循环
             }
            
        }
         
        for(i=0;i<N;i++)//输出位置数组
        printf("%d ",c[i]+1);
        printf("\n");
    return 0;
}

[此贴子已经被作者于2019-2-2 20:23编辑过]

搜索更多相关主题的帖子: 相等 数据 排序 数组 for 
2019-02-02 19:50
xuanyz11
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-1-9
收藏
得分:0 
回复 2楼 了无此生
结果正确,但中间输出为什么那么多混乱字母呢,呵呵,先感谢了,我仔细研读一下

[此贴子已经被作者于2019-2-2 20:28编辑过]

2019-02-02 20:27
xuanyz11
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-1-9
收藏
得分:0 
回复 3楼 xuanyz11
感谢感谢
2019-02-02 20:31
快速回复:含有相等数据的一维数组排序 相等的数据也占据排序号,怎么排呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015553 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved