【C】按字符串长度排序
来源:互联网 发布:杭州银行卡 知乎 编辑:程序博客网 时间:2024/06/07 08:17
按字符串长度排序可以分为以下三个步骤:
读取所有输入行
对文本进行排序
- 按次序打印文本行
代码如下:
#include <stdio.h>#include <string.h>#include <malloc.h>#define MAXLEN 1000char *alloc(int);int getline(char *p,int n);//读取一行字符int readline(char *lineptr[],int maxlines);//读取所有输入行void qsort(char *lineptr[],int left,int right);//对字符串进行排序void writeline(char *lineptr[],int lines);//打印void swap(char *lineptr[],int i,int j);//交换指针int main(){ char *p[100]; int i; i = readline(p,100); //swap(p,0,1); qsort(p,0,i-1); writeline(p,i); //printf("%s",p[1]); printf("%d\n",i); return 0;} int getline(char s[],int n){ int i; int c; for(i=0;i<n-1&&(c=getchar())!='\n'&&c!=EOF;i++) s[i]=c; if(c=='\n') { s[i]=c; i++; } s[i] ='\0'; return i;}int readline(char *lineptr[],int maxlines){ int len,nlines; char *p; char line[MAXLEN]; nlines = 0; while((len = getline(line,MAXLEN)) >0 ) if(nlines >= maxlines || (p = (char*)malloc(len)) == NULL) //p=alloc[len]ÉêÇëÄÚ´æ¿Õ¼ä return -1; else { line[len-1]='\0'; //ɾ³ýÁË»»Ðзû strcpy(p,line); lineptr[nlines++] = p; } return nlines; }void writeline(char *lineptr[],int lines){ int i=0; for(i=0;i<lines;i++) printf("%s\n",lineptr[i]);}void qsort(char *lineptr[],int left,int right){ int i,last; if(left>=right) return ; swap(lineptr,left,(left+right)/2); last = left; for(i=left+1;i<=right;i++) //if(strcmp(lineptr[i],lineptr[left])<0) if(strlen(lineptr[i])<strlen(lineptr[left]))//比较字符串长度 swap(lineptr,++last,i); swap(lineptr,left,last); qsort(lineptr,left,last-1); qsort(lineptr,last+1,right);}void swap(char *lineptr[],int i,int j){ char *temp; temp = lineptr[i]; lineptr[i]=lineptr[j]; lineptr[j] = temp;}
运行结果:
0 0
- 【C】按字符串长度排序
- 自定义排序,按字符串长度排序
- 字符串列表按字符长度排序
- 按照字符串长度排序
- 按照字符串长度排序
- C语言字符串长度
- C语言字符串长度
- C语言字符串长度
- C语言字符串长度
- C语言 字符串长度
- C语言字符串长度
- 对列表中的字符串,按字符串长度排序
- NSArray根据字符串长度排序
- TreeSet comparator字符串长度排序
- 删除容器中重复字符串并按长度排序…
- 删除容器中重复字符串并按长度排序…
- 【java编程】Collection类之TreeSet按字符串长度排序
- 按字符串长度排序——TreeSet练习
- Android Studio 调试出现waiting for debugger的解决办法
- Matlab中进行迭代与结束迭代的两种写法
- winserver2008 服务器添加新用户及设置远程桌面管理
- yii2的安装
- 项目3-点类派生直线类
- 【C】按字符串长度排序
- tomcat设置http自动跳转为https访问
- Android Studio导入开源项目的总结
- ViewPager自定义切换效果
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
- AFNetworking 3.0迁移指南
- 成员变量、局部变量和静态变量的区别
- Labeled Faces in the Wild 人脸识别数据集 部分测试数据
- js:推荐一下layer,生产力组件