void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
base -- 指向要排序的数组的第一个元素的指针。
nitems -- 由 base 指向的数组中元素的个数。
size -- 数组中每个元素的大小,以字节为单位。
compar -- 用来比较两个元素的函数。
#include <iostream>
#include <cstdio>
using namespace std;
int values[] = { 88, 56, 100, 2, 25 };
int cmpfunc (const void * a, const void * b)
{
//如果a > b 返回 1
//如果a = b 返回 0
//如果a < b 返回 -1
return ( *(int*)a - *(int*)b );
}
int main() {
int n;
printf("排序之前:\n");
for( n = 0 ; n < 5; n++ ) {
printf("%d ", values[n]);
}
//qsort是快速排序 低--->高
//如果cmpfunc()返回的值是1则交换位置
qsort(values, 5, sizeof(int), cmpfunc);
printf("\n排序之后:\n");
for( n = 0 ; n < 5; n++ ) {
printf("%d ", values[n]);
}
return 0;
}
快速排序代码实现
#include <stdio.h>
int a[100],n,temp;
void QuickSort(int h,int t)
{
if(h>=t) return;
int mid=(h+t)/2,i=h,j=t,x;
x=a[mid];
while(1)
{
while(a[i]<x) i++;
while(a[j]>x) j--;
if(i>=j) break;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
a[mid]=a[j];
a[j]=x;
QuickSort(h,j-1);
QuickSort(j+1,t);
return;
}
int main()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
QuickSort(0,n-1);
for(i=0;i<n;i++) printf("%d ",a[i]);
return(0);
}