mysort

程序填空题,自己编写排序函数 mysort,使得其能够对任意类型的数组排序

输入
多组数据。每组数据以整数 n开头(n<10),然后是n个整数
输出
对每组数据,输出三行。
第一行是整数从小倒大排序的结果
第二行是按个位数从小到大排序的结果(如果个位数相同,小的排在前面)
第三行还是整数从小倒大排序的结果
样例输入

5 21 3 76 48 445 6 73 29 45 8737 2 1

样例输出

3,21,48,76,445,
21,3,445,76,48,
3,21,48,76,445,
1,2,29,45,73,8737,
1,2,73,45,8737,29,
1,2,29,45,73,8737,

#include using namespace std; struct A {
int nouse1;
int nouse2;
int n; };

// 在此处补充你的代码 void mysort(void a,int size,int
width,int(pfCompare)(const void * e1,const void * e2)) { //冒泡排序
for(int i = size-1; i>0; --i)
{
//i表示当前最大值应该放的位置
for(int j = 0; j<i; ++j)
{
char * a1 = (char * )a+j
width;
char * a2 = (char * )a+(j+1)width;
if(pfCompare(a1,a2)>0)
{ //这里是关键,要字节交换
for(int k = 0; k<width; ++k)
{
char tmp = a1[k];
a1[k] = a2[k];
a2[k] = tmp;
}
}
}
} } int MyCompare1( const void * e1,const void * e2) {
int * p1 = (int * ) e1;
int * p2 = (int * ) e2;
return * p1 - * p2; } int MyCompare2( const void * e1,const void * e2) {
int * p1 = (int * ) e1;
int * p2 = (int * ) e2;
if( (
p1 %10) - (
p2 % 10))
return (* p1 %10) - (* p2 % 10);
else
return * p1 - * p2; } int MyCompare3( const void * e1,const void * e2) {
A * p1 = (A*) e1;
A * p2 = (A*) e2;
return p1->n - p2->n; } int a[20]; A b[20]; int main () {
int n;
while(cin >> n)
{
for(int i = 0; i < n; ++i)
{
cin >> a[i];
b[i].n = a[i];
}
mysort(a,n,sizeof(int),MyCompare1);
for(int i = 0; i < n; ++i)
cout << a[i] << “,” ;
cout << endl;
mysort(a,n,sizeof(int),MyCompare2);
for(int i = 0; i < n; ++i)
cout << a[i] << “,” ;
cout << endl;
mysort(b,n,sizeof(A),MyCompare3);
for(int i = 0; i < n; ++i)
cout << b[i].n << “,” ;
cout << endl;
}
return 0; }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值