c中的qsort()头文件是#include <stdlib.h>
方法:qsort(*buff, size_t num, size_t size, int(*compare)(const *void, const *void));
升序:
int cmp(const void *x, const void *y) {
return *(int *)x-*(int *)y;
}
降序:
int cmp(const void *x, const void *y) {
return *(int *)y-*(int *)x;
}
升序代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int a[10];
int cmp(const void *x, const void *y) {
return *(int *)x-*(int *)y;
}
int main() {
for (int i = 0; i < 5; i ++) {
scanf("%d", &a[i]);
}
qsort(a, 5, sizeof(a[0]), cmp);
for (int i = 0; i < 5; i ++) {
cout << a[i] << " ";
}
cout <<endl;
return 0;
}
降序代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int a[10];
int cmp(const void *x, const void *y) {
return *(int *)y-*(int *)x;
}
int main() {
for (int i = 0; i < 5; i ++) {
scanf("%d", &a[i]);
}
qsort(a, 5, sizeof(a[0]), cmp);
for (int i = 0; i < 5; i ++) {
cout << a[i] << " ";
}
cout <<endl;
return 0;
}
字符串升序:
int cmp(const void *x, const void *y) {
return strcmp((char *)x,(char *)y);
}
字符串降序:
int cmp(const void *x, const void *y) {
return strcmp((char *)y,(char *)x);
}
降序代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char a[10][50];
int cmp(const void *x, const void *y) {
return strcmp((char *)x,(char *)y);
}
int main() {
for (int i = 0; i < 5; i ++) {
scanf("%s", a[i]);
}
qsort(a, 5, sizeof(a[0]), cmp);
for (int i = 0; i < 5; i ++) {
cout << a[i] << " ";
}
cout <<endl;
return 0;
}
升序代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char a[10][50];
int cmp(const void *x, const void *y) {
return strcmp((char *)y,(char *)x);
}
int main() {
for (int i = 0; i < 5; i ++) {
scanf("%s", a[i]);
}
qsort(a, 5, sizeof(a[0]), cmp);
for (int i = 0; i < 5; i ++) {
cout << a[i] << " ";
}
cout <<endl;
return 0;
}