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. c# 服务端接入个推指定对象消息推送

    个推消息推送主要步骤:1.获取鉴权token 2.发送推送消息 1.获取鉴权token(会过期,需要间隔时间获取一次): tokenUrl = "https://restapi.getui. ...

  2. Metasploit渗透测试框架一

    Metasploit简介 Metasploit是一个渗透测试平台,使您能够查找,利用和验证漏洞.该平台还有Metasploit Pro. Metasploit是一个免费的.可下载的框架,本身自带数百已 ...

  3. 7.26-javascript

    折半查找:数据必须有序 //数组定义 let arr1 = [1,2,3,4,5]; //用字面量定义数组 let arr2 = new Array(1,2,3,4,5); //用字面量定义数组 le ...

  4. pip install -r 是什么意思

    我们经常使用python安装第三方库的的命令是 pip install xxx; 但是有一天,突然要执行的命令是: pip install -r requirements.txt,突然就不知道是什么意 ...

  5. mysql安装,3306端口被占用的解决办法

    如果安装mysql时,提示3306端口被占用:可以按下面步骤执行: 1.查看占用3306端口的程序 netstat -ano|findstr 3306 2.杀死该端口对应的进程 如上图,3306端口对 ...

  6. Eclipse 获取maven项目出现问题汇总

    1.errors occurred during the build,可以试试加上下图的配置,路径根据自己jak安装路径去修改

  7. EBS 常用sql

    1)查看请求挂在哪个状态下 SELECT fcpv.concurrent_program_name FROM fnd_request_groups frg, --请求组 fnd_request_gro ...

  8. STP协议-进阶

    一 STP的选举规则1.在交换网络中选举一个根桥(Root Bridge)比较Bridge ID桥ID(优先级+MAC地址)越小越优 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交 ...

  9. 取得SAP服务器主机名(host name)和端口号(port)函数[TH_GET_VIRT_HOST_DATA]

    本文转载至:http://www.baidusap.com/abap/function/4245 是要Vcode开发abap的时候,连接服务器的时候需要端口号,可以用函数TH_GET_VIRT_HOS ...

  10. react组件传参记录,防止以后忘记,欢迎指正讨论

    c: 'Celsius', f: 'Fahrenheit' }; function toCelsius(fahrenheit) { return (fahrenheit - 32) * 5 / 9; ...