Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1085567
  • 博文数量: 169
  • 博客积分: 12306
  • 博客等级: 上将
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-29 14:55
文章分类

全部博文(169)

文章存档

2012年(18)

2011年(78)

2010年(15)

2009年(1)

2008年(11)

2007年(39)

2006年(7)

我的朋友

分类: 云计算

2011-10-19 16:40:42

  1. #include   
  2. #include "public.h"  
  3. using namespace std;  
  4. template <class T>  
  5. void bubble(T *data,int n)//冒泡  
  6. {  
  7.     int i,j;  
  8.     T temp;  
  9.     for(i=0;i
  10.     {  
  11.         for(j=n-1;j>i;j--)  
  12.             if(data[i]
  13.                 Swap(data[j],data[i]);  
  14.     }  
  15. }  
  16. template <class T>  
  17. void select(T *data,int n)//选择  
  18. {  
  19.     int i,j,temp;  
  20.     for(i=0;i
  21.     {  
  22.         temp = i;  
  23.         for(j=i+1;j
  24.           
  25.             if(data[temp]>data[j])  
  26.                 temp = j;  
  27.             Swap(data[i],data[temp]);  
  28.           
  29.     }  
  30. }  
  31. template <class T>  
  32. void insert(T *data,int n)//插入  
  33. {  
  34.     int i,j;  
  35.     T temp;  
  36.     for(i=1;i
  37.     {  
  38.         j=i;  
  39.         temp = data[i];  
  40.         while(j>0&&data[j-1]>temp)  
  41.         {  
  42.             data[j]=data[j-1];  
  43.             j--;  
  44.         }  
  45.         data[j]=temp;  
  46.     }  
  47. }  
  48. template <class T>  
  49. void sswap(T &A,T &B)  
  50. {  
  51.     T TEMP;  
  52.     TEMP = B;  
  53.     B = A;  
  54.     A = TEMP;  
  55. }  
  56. template <class T>  
  57. int  quick(T *data,int low,int high)//快速  
  58. {  
  59.     int scanUp,scanDown;  
  60.     T pivot;  
  61.     int mid;  
  62.     if(low>high)  
  63.     {  
  64.         return -1;  
  65.     }  
  66.     else if(high-low==1)  
  67.     {  
  68.         if(data[high]
  69.             sswap(data[high],data[low]);  
  70.         return -1;  
  71.     }  
  72.       
  73.     mid = (high+low)/2;  
  74.     pivot = data[mid];  
  75.     sswap(data[low],data[mid]);  
  76.     scanUp = low+1;  
  77.     scanDown = high;  
  78.     while(scanDown>scanUp)  
  79.     {  
  80.         while(scanUp<=scanDown&&data[scanUp]<=pivot)  
  81.           
  82.         {  
  83.             scanUp++;  
  84.         }  
  85.         while(data[scanDown]>pivot)  
  86.         {  
  87.             scanDown--;  
  88.         }  
  89.         if(scanUp
  90.             sswap(data[scanUp],data[scanDown]);  
  91.     }  
  92.     data[low] = data[scanDown];  
  93.     data[scanDown] = pivot;  
  94.     if(low
  95.         quick(data,low,scanDown-1);  
  96.     if(scanDown+1
  97.         quick(data,scanDown+1,high);  
  98.     return 0;  
  99. }  
  100. int main()  
  101. {  
  102.     int data[11]={2334,564,657,6,87,4354,342,34,5,543};  
  103.     cout<<"please input a num q,s,b or i:"<
  104.     char a;  
  105.     cin>>a;  
  106.     switch(a)  
  107.     {  
  108.         case 'q':  
  109.             quick(data,0,9);  
  110.             break;  
  111.         case 's':  
  112.             select(data,10);  
  113.             break;  
  114.         case 'b':  
  115.             bubble(data,10);  
  116.             break;  
  117.         case 'i':  
  118.             insert(data,10);  
  119.             break;  
  120.         default:  
  121.             cout<<"input error"<
  122.             break;  
  123.     }  
  124.     print(data);  
  125. }  
  126.   
  127.              
阅读(481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~