c语言中的排序问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 08:08:13
简述功能:输入几个字符串,如A01,A2,A04,A1,A11,B1,B11,B12,B5,比较结果为 A01,A04,A1,A2,A11,B1,,B5,B11,B12,算是混合排序吧...
实在写不出,求大虾给源码.....
前面按字符排序,字符相同的按数字大小排,a2应在a11前面

#include "stdio.h"
#include "string.h"
#define N 9 /*字符串个数*/
main(){
int i,j,t;
char min[10]="";
char str[N][10]={"A04","A1","A11","B1","A01","A2","B11","B12","B5"};
for(i=0;i<N;i++){
strcpy(min,str[i]);
for(j=i+1;j<=N;j++){
if(strcmp(min,str[j])>0){
strcpy(min,str[j]);
t=j;
}
}
strcpy(str[t],str[i]);
strcpy(str[i],min);
printf("%s\n",min);
}
getch();
}
因为我感觉a01应该拍在a1的前面,因为要是你说的那样看后面的数值大小那么01和1是相同而且一般排序也都是看每一位中的大小所以我就按我想的做了,要是你非要变成你想的那样就改一些程序好了;
另外:如果不需用对原来数组进行修改或者存进其他数组中就把
strcpy(str[t],str[i]);strcpy(str[i],min);t=j这三句话去掉或者修改一些就可以了.

先截取字符串 比如将a01拆为a和01 去比较后面的数字
B开头的同理 两者都比较好了 a的在b的前面 就好了