sort

任务

  1. 用man sort 查看sort的帮助文档
  2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
  3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用

一、查看帮助文档

二、基本功能使用

  • -t [分隔字符]: 指定排序时所用的栏位分隔字符

  • -k [filed]: 按指定的列进行排序

  • -n: 依照数值的大小排序,该选项不单独使用,一般放在域号之后

  • -r: 以相反的顺序来排序

  • -u: 去掉排序结果中的重复行

  • -o<输出文件>: 将排序后的结果存入指定的文件

  • -c: 检查文件是否已经按照顺序排序

sort实现

相关函数: fopen(), fread(),fwrite()

行结构体
{
char* buff
int lines
} 主函数 int agrc char* agrv[]
{
char line*
long 行数
FILE* fp
fp = fopen()
行数 = 行数获取函数(line,fp)
行结构体写入函数
(*p)(指向链表头节点指针)
for(int i = 2; i < agrc; i++)
{
switch agrv[i]
case -t
调用栏位分隔字符函数
break case -n
调用字符串转换函数atoi()
break case -r
p = 倒序插入排序
(*p)(指向链表头节点指针)
break case -u
调用删除重复项函数
break case -o
调用输出排序后文件函数fwrite(),需等待排序线程结束
break default:
p = 插入排序
(*p)(指向链表头节点指针)
break
}
} 行数 行数获取函数 char line* fp
{
调用函数fread()
获取行数
line = (char*)malloc(sizeof(char)*行数)
将每行大小写入数组
返回行数
} 写入失败行数 行结构体写入及链表生成函数 char *line 行数
{
for(int i = 1;i != 行数;i++)
{
分配每行结构体大小
按行写入结构体
if(写入失败)
return 结构体.行数
用尾插法插入链表
}
return 0
} 链表处理函数
{
插入
删除
}

20191323王予涵sort的更多相关文章

  1. 20172305 2018-2019-1 《Java软件结构与数据结构》第八周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第八周学习总结 教材学习内容总结 本周内容主要为书第十二章内容: 堆(附加属性的二叉树) 完全二叉树 (最小堆)对于 ...

  2. js中实现中文按字母拼音排序

    js中实现中文按字母拼音排序 var Pinyin = (function (){ var Pinyin = function (ops){ this.initialize(ops); }, opti ...

  3. QQ会员AMS平台PHP7升级实践

    作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. QQ会员活动运营平台(AMS ...

  4. Java中食之无味弃之可惜的数组

    在Java的泛型出现之前,只有数组可以用来存储指定类型的对象:在自动装箱机制出现之前,只有数组可以用来存储基本数据类型:也就是说,在泛型和自动装箱机制出现之前,数组在Java当中的分量举足轻重. 况且 ...

  5. 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结

    作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...

  6. 2017-2018-2 1723《程序设计与数据结构》第九周作业 & 第二周结对编程 总结

    作业地址 第九次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1878 (作业界面已评分,可随时查看,如果对自己的评分有意 ...

  7. 元组,列表的增删改查, for,range 循环

    1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删 ...

  8. 1、list 的一些相关操作 2、增删改查 3、tuple 的操作 4、range

    1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 # lst = [1, "周杰伦" ...

  9. 2017-2018-2 1723《程序设计与数据结构》第三周作业 & 实验一 总结

    作业地址 第三周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1667 提交情况如图: 实验一:https://edu.c ...

  10. 大规模SNS中兴趣圈子的自动挖掘

    转自:http://www.infoq.com/cn/articles/zjl-sns-automatic-mining 一.为何要在大规模SNS中挖掘兴趣圈子 随着国外的facebook.twitt ...

随机推荐

  1. 记录VUE项目使用 sass 版本不匹配问题

    之前安装的node.js 是16 版本的导致找不到合适node sass 版本. node.js 退版本之后正常 -------------------------------------- ---- ...

  2. Maven中的元素Exclusions、modules、parent、properties以及import

    Dependencies:是可选依赖(Optional Dependencies) Exclusions:是依赖排除(Dependency Exclusions) 2.Dependencies (1) ...

  3. ChatGPT 爆火!真有那么神?设计师会失业吗?

    人工智能来了,咱们是不是都要失业了呢? 一款AI产品,在科技市场和资本市场掀起了一阵风暴. 一切的源头,来自一个由美国人工智能公司OpenAI开发的一种大型语言模型ChatGPT.它采用了Transf ...

  4. UART4模板

    #define UART4_Bps 9600 #define UART4_RecSize 20 uchar UART4_RecData[UART4_RecSize];uchar UART4_Loc; ...

  5. java中post发送json格式数据

    /** * 发送post请求 * @param URL 数据发送地址 * @param json json格式数据内容 * @param headParams 请求头内容 * @return 请求结果 ...

  6. oracle 重启

    一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...

  7. 【OBS Studio】使用 VLC 视频源播放视频报错:Unhandled exception: c0000005

    使用 OBS Studio 和 VLC media player 可以实现视频播放列表的推流,参考『OBS如何添加播放列表?』. 但是使用过程中发现使用 VLC 视频源播放视频时,一个视频播放完切换下 ...

  8. Flutter statecontroller.update(MaterialState.disabled,false)无效

    因为中间会调用 void initStatesController() { if (widget.statesController == null) { internalStatesControlle ...

  9. .net ef 链接 mysql

    https://blog.csdn.net/weixin_30394975/article/details/114168133

  10. WebService 客户端上传图片,服务器端接收图片并保存到本地

    需求:如题,C#本地要调用Webservice接口,上传本地的照片到服务器中: 参考:客户端: https://blog.csdn.net/tiegenZ/article/details/799276 ...