Sort

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)

原文地址:https://www.cnblogs.com/Aegon-Targaryen/p/15345786.html