将无序数列升序排列,并输出排列结果和排列后的下标

2023-10-26

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a[] = { 8,3,10,5,7,1,2,6,4,9 };   //待排序数组
    int temp[20] = { 0 };
    int result[20];                     //下标存入的数组
    int n = sizeof(a) / sizeof(a[0]);   //数组长度
    int i;

    for (i = 0; i < n; i++)             //得到每个数字出现的个数,temp[i]为i的个数
        temp[a[i]]++;                   //eg:temp[5]为5出现的个数

    for (i = 1; i < 20; i++)            //得到小于等于i的数的个数,temp[i]为小于等于i的个数
        temp[i] += temp[i - 1];         //eg:temp[5]为小于等于5的数出现的个数

    for (i = 0; i < n; i++)             //--temp[a[i]]表示a[i]这个数排列后应该放的位置
        result[--temp[a[i]]] = i;       //表示把下标放在该放的位置上,i表示下标

    for (i = 0; i < n; i++)              //输出下标所在的位置
        printf("%d ", result[i]);

    printf("\n");

    for (i = 0; i < n; i++)              //输出升序排列的结果
        printf("%d ", a[result[i]]);

    system("pause");
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将无序数列升序排列,并输出排列结果和排列后的下标 的相关文章

  • 盒子模型和box-sizing属性

    1 前言 今天被杭州有赞的前端面试官面了 很多问题一知半解 主要原因还是因为我这几个月大多数时间都在写项目 平常学习也是主要以框架为主 很多基础知识都遗忘了 从这篇文章开始 我会记录 学习和研究面试中遇到的问题 当然 一般都是关于前端开发的
  • 移动数据网络类型是nr_5G(NR)网络中小区接入控制

    无线接入控制是一种针对话务拥塞的处理机制 通过限制移动设备向基站的连接请求 保护和保证紧急呼叫等关键通信的成功接入 无线侧可控制接入的方法有两种 1 终端侧 接入控制方式 在向基站移动设备发送任何连接请求之前 终端 需读取广播消息 基站 识
  • 小程序全局悬浮窗_微信小程序悬浮窗弹出怎么实现?

    微信小程序悬浮窗弹出怎么实现 很多的微信小程序管理员会在微信小程序界面开发微信小程序悬浮窗弹出功能 接下来小编会为大家介绍微信小程序悬浮窗弹出关注实现的全部步骤哦 微信小程序悬浮窗弹出怎么实现 微信小程序悬浮窗弹出的效果如下 微信小程序悬浮

随机推荐