现在的位置: 首页 > 综合 > 正文

快速排序

2013年10月08日 ⁄ 综合 ⁄ 共 512字 ⁄ 字号 评论关闭

int partition(int arr[],int left,int right)

{

  int p, q, x, t;


  x = arr[left];

  p = left-1;

  q = right+1;


  while(p+1 != q) {

    if(arr[p+1] <= x)

      p++;

    else if(arr[q-1] > x)

      q--;

    else {

      t = arr[p+1];

      arr[++p] = arr[q-1];

      arr[--q] = t;

    }

  }


  arr[left] = arr[p];

  arr[p] = x;

  return p;

}


void quicksort(int arr[], int left, int right)

{

  int p;

  if (left < right) {

    p=partition(arr, left, right);

    quicksort(arr, left, p-1);

    quicksort(arr, p+1, right);

  }

}

使用:

int aa[]={3,2,5,31,65,23,98,21,34,56,77,43,24,88};

quicksort(aa, 0, sizeof(aa)/sizeof(aa[0])-1);

抱歉!评论已关闭.