C/C++内置排序算法的使用
qsort函数的用法
头文件:#include<stdlib.h>
函数形式:qsort(array,n,szeof(type),cmp);
比较函数 int cmp(const void*a,const void *b){return (*(int*)a-*(int*)b);}//升序
函数第一个参数array是参与排序的数组名(或者为排序的开始地址);第二个参数n为待排序的元素个数,第三个参数是待排序元素类型所占的内存大小,第四个参数cmp为指向函数的指针(即为函数名),该函数用于qsort函数的排序策略(按照升序排序或按照降序排序等)。对于比较函数cmp是一个用户自定义函数,但该函数参数的类型必须为const void *类型。
//手动实现qsort #include<stdio.h> #define MAX 100 #define N 10 int a[MAX]; void QuickSort(int low,int high) { if(low>=high) return;//递归结束条件 int p=a[low];//作为哨兵 int t,i=low+1,j=high; while(i<=j) { while(i<=j&&a[i]<=p)i++; while(i<=j&&a[j]>=p)j--; if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t; } } //调换a[low]与a[j]的位置 a[low]=a[j]; a[j]=p; QuickSort(low,j-1); QuickSort(j+1,high); } int main() { for(int i=0;i<N;i++)scanf("%d",&a[i]); QuickSort(0,N-1); for(int i=0;i<N;i++)printf("%d,",a[i]); return 0; }
有关快排的优化,强烈推荐: 三种快速排序以及快速排序的优化
浙公网安备 33010602011771号