Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140788
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

2012年(66)

我的朋友

分类: C/C++

2012-07-18 10:19:29


 

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. void swap(int &m,int &n) // 实现2数据的交换,注意是将数值的地址进行交换
  3. {
  4.     int temp;
  5.     temp=m;
  6.     m=n;
  7.     n=temp;
  8. }
  9. int Partion(int (*T)[10],int l,int h) //计算每次递归的分割点
  10. {
  11.     int i,j;
  12.     int last;
  13.     i=l-1;
  14.     last=(*T)[h]; // 取最后一个元素为比较对象
  15.    for(j=l;j<h;j ) // 将最后一个元素之前的所有元素一一与最后一个进行比较
  16.    {
  17.     if((*T)[j]<=last) //如果当前元素小于last
  18.         {
  19.         i ; // 使i 指向当前比last大的数值
  20.         swap((*T)[i],(*T)[j]); // 交换 i 所指向的较大值和 i 之后j
  21.                                //所指向的较小值,实现小值和大值基本有序
  22.         }
  23.     }
  24.     swap((*T)[i 1],(*T)[h]); //将last值交换至较小值序列和较大值序列之间
  25.     return i 1; //返回交换后的last值所在的下表
  26. }
  27. void FastSort(int (*T)[10],int l,int h) // 快速排序
  28. {
  29.     int q;
  30.     if(l<h) // 递归三要素之一 ---- 递归终止条件
  31.     {
  32.        q=Partion(T,l,h); // 得到 q 值
  33.         FastSort(T,l,q-1);
  34.         FastSort(T,q 1,h);
  35.  }
  36. }
  37. int main()
  38. {
  39.  int a[10]={
  40.   100,433,135,63,151,32,634,41,65,13
  41.  };
  42.  FastSort(&a,0,9);

  43.  for(int i=0;i<10;i )
  44.  {
  45.   printf("%d\t",a[i]);
  46.  }
  47. }


 

阅读(882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~