对于排序的深刻理解
2016-10-02 20:06
183 查看
难道排序非得就是直接比较大小吗?完全错误,下面这个就是一个很好地例子
给出N 整数,他们连接成最大整数为?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXN 50
char num[MAXN][100];
int cmp(const void *a,const void *b);
int main()
{
int n,i,temp;
printf("please input the n!\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
itoa(temp,num[i],10);
}
qsort(num,n,sizeof(num[0]),cmp);
for(i=n-1;i>=0;i--)
printf("%s",num[i]);
printf("\n");
return 0;
}
int cmp(const void *a,const void *b)
{
char pa[100];
char pb[100];
char *s,*t;
s=(char *)a;
t=(char *)b;
strcpy(pa,s);
strcpy(pb,t);
strcat(pa,t);
strcat(pb,s);
return strcmp(pa,pb);
}
给出N 整数,他们连接成最大整数为?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXN 50
char num[MAXN][100];
int cmp(const void *a,const void *b);
int main()
{
int n,i,temp;
printf("please input the n!\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
itoa(temp,num[i],10);
}
qsort(num,n,sizeof(num[0]),cmp);
for(i=n-1;i>=0;i--)
printf("%s",num[i]);
printf("\n");
return 0;
}
int cmp(const void *a,const void *b)
{
char pa[100];
char pb[100];
char *s,*t;
s=(char *)a;
t=(char *)b;
strcpy(pa,s);
strcpy(pb,t);
strcat(pa,t);
strcat(pb,s);
return strcmp(pa,pb);
}
相关文章推荐
- 对于基数排序的理解
- 对于闭包的深刻理解
- 从简单的选择排序入手,深刻理解程序
- [Android]对于Android:Layout_weight的深刻理解
- 由数组随机化排序引出的对于js中sort()方法的理解分析
- C++对于类访问权限public,protected,private的深刻理解
- 个人对于冒泡排序和选择排序的理解
- 关于对于归并排序的理解
- 由数组随机化排序引出的对于js中sort()方法的理解分析
- 对于c++面向对象的深刻认识和理解--哲学角度看问题(源生论)
- 对于JS语言的深刻理解(变量定义;作用域链;闭包;this)
- 对于重排序概念的理解与实战
- Java中排序的理解
- 深刻理解js执行原理和闭包
- 对于RAC心跳以及仲裁机制的理解 推荐
- 对于linux下system()函数的深度理解
- 深入理解 c# 第一章 使用IComparer<Product>委托 对 List <Product> 进行排序
- 自己对于的理解Android的生命周期
- 对于Android NDK编译器ARM和Thumb模式的理解及Toolchain的切换clang编译器
- for循环,你深刻理解了吗?