#include <iostream> #include "public.h" using namespace std; template <class T> void bubble(T *data,int n)//冒泡 { int i,j; T temp; for(i=0;i<n;i++) { for(j=n-1;j>i;j--) if(data[i]<data[j]) Swap(data[j],data[i]); } } template <class T> void select(T *data,int n)//选择 { int i,j,temp; for(i=0;i<n;i++) { temp = i; for(j=i+1;j<n;j++) if(data[temp]>data[j]) temp = j; Swap(data[i],data[temp]); } } template <class T> void insert(T *data,int n)//插入 { int i,j; T temp; for(i=1;i<n;i++) { j=i; temp = data[i]; while(j>0&&data[j-1]>temp) { data[j]=data[j-1]; j--; } data[j]=temp; } } template <class T> void sswap(T &A,T &B) { T TEMP; TEMP = B; B = A; A = TEMP; } template <class T> int quick(T *data,int low,int high)//快速 { int scanUp,scanDown; T pivot; int mid; if(low>high) { return -1; } else if(high-low==1) { if(data[high]<data[low]) sswap(data[high],data[low]); return -1; } mid = (high+low)/2; pivot = data[mid]; sswap(data[low],data[mid]); scanUp = low+1; scanDown = high; while(scanDown>scanUp) { while(scanUp<=scanDown&&data[scanUp]<=pivot) { scanUp++; } while(data[scanDown]>pivot) { scanDown--; } if(scanUp<scanDown) sswap(data[scanUp],data[scanDown]); } data[low] = data[scanDown]; data[scanDown] = pivot; if(low<scanDown-1) quick(data,low,scanDown-1); if(scanDown+1<high) quick(data,scanDown+1,high); return 0; } int main() { int data[11]={2334,564,657,6,87,4354,342,34,5,543}; cout<<"please input a num q,s,b or i:"<<endl; char a; cin>>a; switch(a) { case 'q': quick(data,0,9); break; case 's': select(data,10); break; case 'b': bubble(data,10); break; case 'i': insert(data,10); break; default: cout<<"input error"<<endl; break; } print(data); }