C语言实现快速排序

快速排序简介:

即是一个递归的过程,比如对数组a[5] = {1,3,4,5,2}排序。

首先找到一个指标元素,这里取(0+5)/2 = 2即中间的元素a[2];

然后根据a[2]=4排序;

比4小的放到左面,比4大的放到右边。

a[5] = {1,3,2,4,5};

然后分别对数组{1,3,2}和数组{5}进行同样的排序。

递归到没法分割为止。

C代码如下:

#include <stdio.h>
#define LENGTH  10
void swap(int[], int, int);
void qsort(int [],int, int);
void printarray(int [], int);
int main(void)
{ int a[LENGTH] = {10,9,3,49,37,38,1,434,3,10};
 qsort(a, 0, LENGTH-1);
 printarray(a,LENGTH);
 return 0;
}
void qsort(int a[], int left, int right)
{
 int i,j,k,last;
 if(left >= right)
  return;
 i = (left + right)/2;
 swap(a,left, i);
 last = left;
 for(i = left+1; i<=right; i++)
 {
  if(a[i] < a[left])
   swap(a,++last, i);
 }
 swap(a,last,left);
 qsort(a,left,last-1);
 qsort(a,last+1, right);
}


void swap(int a[], int i, int j)
{
 int temp = a[i];
 a[i] = a[j];
 a[j] = temp;
}

void printarray(int a[],int length)
{
 int i;
 printf("Elements of the array is:");
 if(length <= 0)
  return;
 for(i = 0;i <length; i++)
  printf("%d:", a[i]);
}

posted on 2009-11-07 20:48  寂寞的肥肉  阅读(3781)  评论(0编辑  收藏  举报

导航