int GetNumber(char* pString)
{
if (NULL == pString)
{
throw new exception("the input is illegal");
}
int length = 0;
char* pStr = pString;
while (*pStr != '\0')
{
if (*pStr >= 'A'&&*pStr <= 'Z')
{
++length;
++pStr;
}
else
throw new exception("The character should between A~Z");
}
int number = 0;
pStr = pString;
for (int i = 0; i < length; ++i)
{
number = number*(int)pow(26,i) + (*(pStr + i) - 'A' + 1);
}
return number;
}
堆排序:
#include <iostream>
using namespace std;
void MinHeapFixdown(int* a,int i,int n)
{
int temp=a[i];
int j=2*i+1;
while (j<n)
{
if (j+1<n&&a[j+1]<a[j])
j++;
if (a[j]>=temp)
break;
a[i]=a[j];
i=j;
j=2*i+1;
}
a[i]=temp;
}
void MakeMinHeap(int* a,int n)
{
for (int i=n/2-1;i>=0;i--)
{
MinHeapFixdown(a,i,n);
}
}
void MinHeapSort(int* a,int n)
{
MakeMinHeap(a,n);
for (int i=n-1;i>=1;i--)
{
swap(a[0],a[i]);
MinHeapFixdown(a,0,i);
}
}
void main()
{
int a[]={5,1,3,9,7,6,8,11,0};
MinHeapSort(a,9);
for (auto i:a)
{
cout<<i<<" ";
}
cout<<endl;
system("pause");
}