qsort--快排
基本:头文件<stdlib.h>
qsort(s,n,sizeof(s[0]),cmp);
s-数组名
n-需要排序的个数
sizeof(s[0])-每个数据所占内存
cmp-判断函数
整数数组排序:
#include <stdio.h> #include <stdlib.h> int cmp ( const void *a , const void *b ) { return *(int *)a > *(int *)b; } int main() { int a[5]={3,6,1,4,8},i; qsort(a,5,sizeof(a[0]),cmp); for(i=0;i<5;i++) printf("%d ",a[i]); }
//这是从小到大排序--改变cmp里的符号(‘>’--从小到大||‘<‘--从大到小)
char类型数组排序:
#include <stdio.h> #include <stdlib.h> int cmp ( const void *a , const void *b ) { return *(char *)a > *(char *)b; } int main() { char a[5]={‘3‘,‘6‘,‘1‘,‘4‘,‘8‘},i; qsort(a,5,sizeof(a[0]),cmp); for(i=0;i<5;i++) printf("%c ",a[i]); }
//和int一样 只是改变cmp里的数据类型
double型 据说需要x>y?1:-1;虽然不知道为啥:
#include <stdio.h> #include <stdlib.h> int cmp ( const void *a , const void *b ) { return *(double *)a > *(double *)b ? 1 : -1; } int main() { double a[5]={3.3,6.1,1.4,4.3,8.2}; int i; qsort(a,5,sizeof(a[0]),cmp); for(i=0;i<5;i++) printf("%.2lf ",a[i]); }
结构体排序:
时间: 2024-10-05 17:45:41