数据结构摘要
时间:2010-10-03 来源:kitt1987
非递归中序遍历二叉树:
1.根节点入栈;
2.查找当前节点的所有左节点,入栈;
3.左节点出栈,访问节点,右节点入栈。
查找算法:
//折半查找
int BinarySearch(int *pArray, int ArrayLength, int Goal)
{
int High = ArrayLength;
int Low = 0;
int mid;
if (NULL == pArray)
return -1;
while (Low <= High)
{
mid = (High + Low) / 2;
if (Goal == *(pArray + mid))
return mid;
else if (Goal < *(pArray + mid))
High = mid - 1;
else
Low = mid + 1;
}
return -1;
}
排序算法:
//插入排序
void InsertSort(int *pArray, int ArrayLength)
{
int Register;
for (int i = 1; i < ArrayLength; ++i)
{
for (int j = 0; j < i; ++j)
{
if (*(pArray + i) < *(pArray + j))
{
Register = *(pArray + i);
for (int k = i; k > j; --k)
{
*(pArray + k) = *(pArray + k - 1);
}
*(pArray + j) = Register;
}
}
}
}
//冒泡排序
void BubbleSort(int *pArray, int ArrayLength)
{
int Max = *pArray;
for (int j = ArrayLength; j >= 0; --j)
{
for (int i = 1; i < j; ++i)
{
if (Max > *(pArray + i))
{
*(pArray + i - 1) = *(pArray + i);
*(pArray + i) = Max;
}
else
{
Max = *(pArray + i);
}
}
Max = *pArray;
}
}