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;
}

3_2_qsort()快速排序函数的使用(侯捷STL学习笔记)-LMLPHP

快速排序代码实现

#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);
}

参阅:https://www.cnblogs.com/sjy123/p/3287817.html

10-03 18:37