vector quickSort(vector &t,int a,int b)
{
if(a>=b) return t;
int i=a,j=b;
int tmp,tmp2;
tmp=t[a];
while (ia&&t[j-1]>tmp) j--;
if(i
插入排序
void insertSort(int A[],int n)
{
int i;
for (int j=1;j=0&&A[i]>key)
{
A[i+1]=A[i];
i--;
}
A[i+1]=key;
}
}
void merge(int A[],int p,int q,int r)
{
int n1,n2;
n1=q-p+1;
n2=r-q;
int *L=(int *)malloc((n1+1)*sizeof(int));
int *R=(int *)malloc((n2+1)*sizeof(int));
int i,j;
for (i=0;i
计数排序
void counting_sort(int A[],int B[],int k)
{
int i,j;
int *C=(int *)malloc((k+1)*sizeof(int));
for(i=0;i<=k;i++)
C[i]=0;
for (j=1;j<11;j++)
{
C[A[j]]++;
}
for(i=1;i<=k;i++)
C[i]+=C[i-1];
for (j=10;j>=1;j--)
{
B[C[A[j]]-1]=A[j];
C[A[j]]--;
}
}
#include
#include
#include
#include
using namespace std;
int B[10]={};//store the result
int D[3][10]={};//store the splitted result of A[]
int t;
int A[]={-1,123,234,432,532,656,723,212,312,458,687};
void counting_sort(int k)
{
int i,j;
int *C=(int *)malloc((k+1)*sizeof(int));
for(i=0;i<=k;i++)
C[i]=0;
for (j=0;j<10;j++)
{
C[D[t][j]]++;
}
for(i=1;i<=k;i++)
C[i]+=C[i-1];
for (j=9;j>=0;j--)
{
B[C[D[t][j]]-1]=A[j+1];
C[D[t][j]]--;
}
for (int k=0;k<10;k++)
{
A[k+1]=B[k];
}
}
void radixsort(int A[],int d)
{
int scale=1;
for(int i=0;i
#include
#include
#include
#include
using namespace std;
int heap_size;
int exchange(int &a,int &b)
{
int tmp;
tmp=a;a=b;b=tmp;
return 0;
}
int max_heapify(int A[],int i)
{
int l,r,largest;
l=2*i;
r=l+1;
if (l<=heap_size&&A[l]>A[i])
{ largest=l;
}
else
largest=i;
if (r<=heap_size&&A[r]>A[largest])
{ largest=r;
}
if (largest!=i)
{
exchange(A[i],A[largest]);
max_heapify(A,largest);
}
return 0;
}
int build_heap(int A[])
{
for (int i=heap_size/2;i>0;i--)
{
max_heapify(A,i);
}
return 0;
}
int main()
{
int A[]={-1,4,13,23,2,16,8,9,5,5,11,21};
heap_size=11;
build_heap(A);
for (int i=heap_size;i>1;i--)
{
exchange(A[i],A[1]);
heap_size--;
max_heapify(A,1);
}
for (int j=1;j<=11;j++)
{
cout<