字符串技巧排序

算法-22-字符串的排序算法(四种排序) 目录 1、字符串 1.1、属性 1.2、字母表 2、字符串排序方法 3、键索引计数法 3.1、第一步:频率统计 3.2、第二步:将频率转换为索引 3.3、第三步:数据分类排序 3.4、第四步:回写排序好的数组 4、低位优先的字符串排序 5、高位优先的字符串排序 1、字符串 String 是由一系列字符组成的。字符的类型是 char,可能有 2的16次方个值。数十年以来,... 阅读详情

排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2200    Accepted Submission(s): 537


Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是对这些分割得到的整数依从小到大的顺序排序。

 

Input
输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  

输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
 

Output
输出数据也只有一行,是分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开。
 

Sample Input
0051231232050775
 

Sample Output
0 77 12312320

 

 



#include <stdio.h>
#include <string.h>
#define MAX 1001
long a[MAX]={0};
int la=0,lst=0 ;
char c,st[MAX]={'/0'};
long pow_10(int x)
{
     long res=1,i;
     for(i=1 ; i<= x ; i++)
     res *= 10 ;
     return res ;
}
void makerp()
{
     int i,j,rp ;
     la ++ ;
     for(i= 1,j=lst;i<= lst ; i++,j--)
      if ( (rp = st[i]-'0') > 0)
         a[la] += rp*pow_10(j-1) ;
     
}
void sort()
{
     int i,j,t ;
     for(i=1 ; i< la ; i++)
     for(j=i+1 ; j<=la ; j++)
     if (a[j] < a[i])
     {
              t = a[j] ;
              a[j] = a[i] ;
              a[i] = t ;
     }
}

int main(void)
{
    int s=0,t=0;
    int i,j,k ;
   
    while ( ( c=getchar()) != '/n')
    {
          if ( c == '5')
          {
               if ( lst > 0)
               {
               makerp();
               memset(st,'/0',sizeof(st));
               lst = 0 ;
               }
              
               while( (c = getchar()) != '5' && c != '/n')
               st[++lst] = c ;
              
               if ( lst > 0)
               {
               makerp();
               memset(st,'/0',sizeof(st));
               lst = 0 ;
               }
           }
           else if(c != '/n')
           {
               st[++lst] = c ;
           }
        
          if ( c =='/n')
          break ;
     }
   
    if ( lst > 0)
     {
               makerp();
               memset(st,'/0',sizeof(st));
               lst = 0 ;
     }
   
    sort();
   
    
    for(i=1 ; i<= la ; i++)
    printf("%ld ",a[i]);
    printf("/n");
    system("pause");
    return 0 ;
}
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PTA字符串排序实战:从输入处理到冒泡排序优化技巧 本文以PTA平台经典的英文单词排序题目为例,深入探讨了C语言中字符串排序的实战技巧。从健壮的输入处理与数据验证,到冒泡排序的深度优化(如预计算长度、索引排序),再到应对更大数据量时的高级策略(如稳定化qsort、桶排序),旨在帮助读者写出高效、优雅且符合工程规范的代码。 阅读详情

相关推荐

29、Perl 字符串处理与排序技巧

本文详细介绍了 Perl 在字符串处理与排序方面的强大功能。内容涵盖了字符串查找、截取与修改操作,数据格式化方法,以及各种排序技巧,包括基本排序、多级排序和 Unicode 处理。通过结合示例代码与最佳实践,帮助开发者高效处理文本数据与复杂排序场景。

cheese的博客 80

2022-04-23 字符串排序法三则

经典排序如快排,堆排,插排等都是普世的排序,对于字符串这种特定的排序类型,还有一些比较讨巧的方法。 为啥还有讨巧的方法,快排已经优雅的不行不行的了。 因为string不是一个基本的原子式不可拆分的类型,他是由一串字符组成。 再优雅的基于比较的排序也要基于一个一个字符的比较。 基本的排序方法是一个一个的比较,但针对字符串排序的特有方法则是更接近于位图排序。 我们知道,char类型的字符可以转换为0-255的数值,这个字符就可以映射到一个数组之中,我们第一步可以取所有字符串的第一个字符,映射到一个大小为 256

老林的博客 542

VB编程中的排序技巧:从文本框和字符串中提取并排序数字

在数据处理的世界里,排序算法扮演着至关重要的角色。它们是编程语言中最基础且常见的算法之一,广泛应用于数据排序、搜索优化、内存管理和资源分配等多个领域。简单排序算法,如冒泡排序、选择排序和插入排序,虽然在效率上可能不及更高级的算法如快速排序或归并排序,但在学习和理解算法原理方面提供了良好的开端。它们操作直观,易于实现,且对初学者来说是理解更复杂排序逻辑的基石。本章将带你快速回顾这些简单排序算法的核心思想和基本实现,为你深入探讨排序算法打下坚实的基础。同样适用于自定义对象数组。为此,需要对象类实现。

weixin_29097457的博客 952

C++字符串数组排序技巧

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<vector> #include<map> #include<unordered_map> #include<string> #include<unordered_set> #include<iterator> #include<sstream&g.

X丶 的博客 6032

字符串搜索与排序:程序设计的实用技巧

本文深入探讨了在程序设计中进行字符串搜索和排序的方法,包括使用Array::Sort()方法进行排序,以及String类中的Compare()方法来比较字符串。通过一个视频商店库存管理的实例,展示了如何结合ListView控件和搜索日志来提高程序的效率和用户体验。

weixin_36369848的博客 287

Windows 11安装 SQLServer 2008 R2 失败问题处理

Windows 11安装SQL Server 2008 R2失败解决方案 由于Windows 11移除了对PowerShell 2.0的支持,导致SQL Server 2008 R2安装失败。经过多次尝试,最终通过**方案六(修改注册表模拟PowerShell 2.0环境)**成功安装。其他可行方案包括: 使用SP3集成版安装包 通过命令行跳过检查(/SUPPRESSPOWERShellCHECK参数) 创建特殊配置文件 替代方案建议: 使用Docker容器运行 在虚拟机中安装 升级到新版SQL Serve

oDengWei的博客 7157

Java技巧——实现Comparator接口来进行字符串逆向排序

本文已搬家至【Java学习笔记】实现Comparator接口来进行字符串逆向排序

gnuhpc的专栏 1676

ICS v9.5 OverbyteIcsWSocket.pas 整体架构分析

核心架构:OverbyteIcsWSocket.pas 是 Internet Component Suite (ICS) 的基础网络组件单元,提供跨平台 Winsock API 封装,支持TCP/UDP 客户端/服务器,DNS 解析和Raw Socket。在 v9.5 中,SSL/TLS 代码已分离至 OverbyteIcsSslBase.pas 等单元,使核心单元更精简,专注于非加密 socket 操作。

sonadorje的专栏 992

uva10132 字符串数组的qsort排序技巧

首先声明uva服务器又崩了,没有提交所以不知道这道题能否AC,思路可以参考一下,不难。 因为文件都相同,且恰好分成两部分,所以我先将所有字符串按长度排序,最短串和最长串组成的一定是源文件!如果有多个最短串和最长串,就要排列组合去试了。 在编写qsort的比较函数时遇到了问题,百度后解决了,最主要就是*(char**)这里,容易写错,如果只写char*,那是指向字符的指针,char**才是指向指

monkeyduck的专栏 1513

数字电路复位信号设计(异步复位、同步释放)笔记详解

复位信号设计(异步复位、同步释放)笔记详解 1 时序设计 1.1 复位信号设计(异步复位、同步释放) 1.1.0 复位恢复时间和清除时间 首先解释一下恢复时间(recovery time)和清除时间(removal time):(以复位信号低电平有效为例) 复位恢复时间(recovery time):撤销复位时,复位信号无效到时钟有效沿来临之间需要维持的最小的时间,类似于同步时钟的建立时间setup time; 复位清除时间(removal time):复位时,在时钟有效沿来临之后复位信号还需要保持复位

weixin_42294124的博客 1万+

从零开始安装 Windows 11 和 Ubuntu 22.04 双系统

本文详解Windows与Ubuntu 22.04双系统安装流程:需提前确认BIOS模式(UEFI/GPT或Legacy/MBR),关闭BitLocker加密、设备加密及快速启动;推荐Rufus/Ventoy制作启动盘。安装时需规划分区方案(建议单独划分EFI系统分区),注意引导器安装位置选择。双系统启动通过BIOS引导顺序管理,安装后需同步Windows与Linux系统时间。教程适配主流UEFI+GPT设备,强调操作前数据备份及Windows更新策略调整,避免兼容性问题。

萑澈的博客 3765

输入n个字符串字典序排序_30个Python奇淫技巧集

今天小编熬夜整理了一份,内容是基础篇覆盖了字符串,列表,字典和基础序列容器。不要小看青铜篇,这份资料里面收集了很多奇淫技巧,很多小编也是第一次遇到,非常值得收藏。下面我挑选几个给大家看一下,小编觉得都是非常经典的代码技巧。01.字符串拼接-生成器法用生成器yield来做字符串的拼接,我还是第一次遇到,在项目里面并不常见,但是如果是复杂的业务逻辑,需要缓冲字符串到时候可以试试。02.字符串关键字搜索...

weixin_39878760的博客 305

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 393

拼数详解|字符串拼接与自定义排序技巧(洛谷P1012)

掌握字符串拼接比较,3分钟解决NOIP经典拼数问题,附C++竞赛级代码

stillwatersss的博客 993

10种电阻综合对比——《器件手册--电阻》

可变电阻在电子设备中也有很多用途,如在收音机的音量调节电路中,通过旋转可变电阻的旋钮来改变电路中的电阻值,从而改变通过扬声器的电流,实现音量的调节。根据电阻定律,电阻R = ρ(L/S),其中ρ是导体材料的电阻率,L是导体的长度,S是导体的横截面积。比如,同样材料制成的两根电线,粗的电线电阻比细的电线电阻小,长的电线电阻比短的电线电阻大。电流采样电阻的工作原理基于欧姆定律,即电阻两端的电压与通过电阻的电流成正比,公式为 I = V/R,其中 I是电流,V是电阻两端的电压,R 是电阻值。

XU157303764的博客 3138

零基础教你学RDMA驱动开发--第8篇:队列对(QP)、完成队列(CQ)与工作请求(WR)机制剖析

本文深入剖析了RDMA(远程直接内存访问)中的核心机制:队列对(QP)、完成队列(CQ)和工作请求(WR)。QP作为通信端点包含发送队列(SQ)和接收队列(RQ);WR是用户提交的操作指令,转换为工作队列元素(WQE)后由网卡异步执行;CQ则提供完成通知机制。文章详细介绍了三者的协作原理,包括QP状态机、WR提交方式、CQ轮询机制,以及关键的信号控制技术(Signaled Mode)来优化性能。同时对比了SEND/RECV和RDMA WRITE两种模式的差异,提供了调试技巧和最佳实践。这些机制共同构成了RD

amy_mhd的博客 156

python字符串排序_Python 按字符串排序

本文将讨论的是,如何将一个字符串组成的列表,比如 ['abc','cba','bac'] ,按照特定的条件(比如首字母、尾字母、或者长度)灵活的排序?目录直接排序由一些字符串组成的 list ,sort( )方法可以直接用来对字符串排序:>>> a = ["John Smith", "Alice Young", "John Scott Brown"]>>> a.sort()>>> a['Alice...

weixin_39847244的博客 2415

Ubuntu零基础入门到精通【1.2讲】:Ubuntu 与 Linux 的关系 —— 你用的到底是什么?

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 3106

Python小技巧:一种字符串的排序方式

假设有一个序列,数据为:[‘n1’, ‘n2’, ‘n10’, ‘n11’, ‘n21’, ‘n3’, ‘n13’, ‘n20’, ‘n23’],排序后需要达到这个效果:[‘n1’, ‘n2’, ‘n3’, ‘n10’, ‘n11’, ‘n13’, ‘n20’, ‘n21’, ‘n23’]。实现代码如下,在代码中,我给前缀的数字乘上了255,后缀的数字没有大于255的,所以能够实现上述的排序结果。,那么我们可以给前缀数字赋一个很大的权重,再加上后缀,组成的数字就是排序的依据。

Python热爱者的博客 843

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

中对中文字符串进行排序_小技巧|Word中对表格数据进行排序

某些情况下,Word中会插入不同的表格用来对数据进行说明,而表格也并非完全一成不变的,需要根据不同的数据类型进行相应的排序。一般情况下,可能的操作是把Word中的表格复制到Excel中,使用Excel的排序功能按要求排好后,再复制粘帖回来。而实际上Word也是支持对表格进行排序的,是不是以前都不太了解?Word支持按拼音、笔划、数字、日期四种类型进行排序。各种类型操作上大体类似,步骤一样,差别就是...

weixin_39796140的博客 330

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Pandas的排序、字符串日期处理和批量合并拆分技巧

本文介绍了pandas库中几个实用功能:1) 数据排序,包括Series和DataFrame的单列/多列排序;2) 字符串与日期处理,展示了str和dt属性的使用方法;3) DataFrame连接操作,重点讲解concat函数参数;4) Excel表格批量合并与拆分技巧。通过代码示例演示了如何实现多条件排序、日期格式转换、表格纵向/横向合并,以及基于文件目录的批量处理流程,为数据处理工作提供了高效解决方案。

种一棵树最好的时间是十年前,其次是现在 1366

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

sql 字符串排序_性能优化技巧:前半有序时的排序

一、 问题背景与适用场景在对数据集进行排序运算时,有时会遇到这样一种场景:数据集T已经按字段a有序,而字段b无序,现在我们要将T按a、b排序,我们称之为前半有序(a有序)的排序。此时我们能想到一种优化的排序方法:从T中先取出a值相同的一组记录,再这一组内对b排序。然后再依次取出下一组a值相同的记录,重复这个动作,直到完成T中所有记录的排序。这种方法的好处是不需要对T中所有记录进行大排序,一次只需取...

weixin_39884877的博客 232
上一篇: 整数分解之和最大问题(全分成3,少分成2)
下一篇: 整数划分问题(C语言求解)
oopos
博客等级 码龄19年 21粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值