标题:求一个排序算法的思路,关于文本文件的
只看楼主
newid_55
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-10-24
结帖率:0
已结贴  问题点数:20 回复次数:3 
求一个排序算法的思路,关于文本文件的
一个txt文件,假如有200条记录,举例说:

计算机科学
链表算法
算法
文本段
.......

每一行只有几个字,比如6个,5个,2个,1个等等,一条记录占一行。

现在想把这200条无序的记录按照字段的长度由小到大进行重新排序,比如上面的排序后得到:

算法
文本段
链表算法
计算机科学
....

然后再把这个排序后的结果存储到另一个txt文件中,求算法思路,越具体越好,谢谢了!
搜索更多相关主题的帖子: 计算机科学 文本文件 记录 
2016-10-24 07:22
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:7 
首先是O(N)的时间把所有数据读入。这我相信是所有算法都必须经历的。

其次,因为你这个场景不会涉及到数据增减,仅仅是把数据排序后重新写入原文件。并且数据规模不大(只有200)
可选的排序算法太多,快排、归并、堆排、。。。O(NlogN)
甚至是插入、冒泡都能完成O(N^2)

最后的输出又是一个O(N)。

φ(゜▽゜*)♪
2016-10-24 15:03
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:7 
楼上的版主大大好高深啊!看不懂。
楼主此题估计用c++的string类好做些。
2016-10-24 18:48
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:7 
//冒泡排序。效率可能不是很高

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char arr[200][15];
int hang=0;

void readData(){
    FILE *fp;
    if((fp=fopen("1.txt","r"))==NULL){
        printf("file open error!!\n");
        exit(0);
    }
    while(!feof(fp)){
        fscanf(fp,"%s",arr[hang++]);
        if(strlen(arr[hang-1])==0)
        {
            hang--;
            break;
        }
    }
    fclose(fp);
}

void writeData(){
    FILE *fp;
    if((fp=fopen("2.txt","w"))==NULL){
        printf("file open error!!\n");
        exit(0);
    }
    int i=0;
    while(i<hang){
        fprintf(fp,"%s\n",arr[i]);
        i++;
    }
    fclose(fp);
}

void rank(){
    char ch[15];
    char (*p)[15]=arr;
    for(int i=0;i<hang-1;i++){
        for(int j=0;j<hang-1-i;j++){
            if(strlen(p[j])>strlen(p[j+1])){
                strcpy(ch,arr[j]);
                strcpy(arr[j],arr[j+1]);
                strcpy(arr[j+1],ch);
            }
        }
    }
}

int main()
{
    readData();
    rank();
    writeData();
    return 0;
}
2016-10-24 22:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470182-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.316575 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved