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

有关快排的优化,强烈推荐: 三种快速排序以及快速排序的优化

 

posted @ 2013-08-07 15:04  soganye  阅读(590)  评论(0)    收藏  举报