Sort
1. 用man sort 查看sort的帮助文档
2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用
1. 用man sort 查看sort的帮助文档
输入
man sort
2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
sort常用选型
建立一个test.txt文件,并且输入数据,通过cat命令查看文件内容
使用sort test.txt命令
结果如上图,sort默认先根据第一个分割域(首字母)对文件内容进行排列。
-t选项
-t可以指定分隔域
sort -tX XXXX
第一个x为分隔域的标志,xxxx为文件名。
-k选项
-k选项用于指定域进行排序。
sort -kX XXXX
第一个x为第几个域,xxxx为文件名。
下图将分隔域的标志设置为:,后根据第二个域进行排序
-r选项
-r选项用于指定域进行逆序排列
-o选项
-o选项用于将排序的结果写入到另一个文件中。
sort -o XXXX1 XXXX2
注意:要写入的文件放在原排序文件的前面,放反会将原排序文件覆盖。font>
-c选项
检验是否有序
一个无序的序列直接排序后检验是不行的,进行完写入文件之后再进行检验顺序才能得到正确结果:
-m选项
-m选项用于将两个排好序的文件合并成一个排好序的文件,但这两个文件必须是有序的
先更改一下刚才的两个文件
3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用
#include <stdio.h>
#define MAXN 100
sort(int a[],int n);
int main(){
int a[MAXN],n,i;
printf("please input the size of array:");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
sort(int a[],int n){
int i,j;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(a[j]>a[i+1])
{
int tmp = a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
个人编程能力有限,只能实现简单的排序方法,但是根据网上查找的资料,我认为这个程序如果基于C语言的话需通过读取字符判断当前是否为分隔符,读取文件,对数组调用qsort函数进行排序。
可参考博文:linux内核中的排序接口--sort函数-阿里云开发者社区 (aliyun.com)