一、二叉树的叶子节点、度
叶子节点表示而二叉树最末端的节点,不再有新的子节点延伸,度为1。
度为2的节点表示可延伸两个子节点,度为1就是一个,0就是叶子节点。
度为2的节点数a与度为0的节点数b存在关系式 a=b-1
二、关于各种排序的详解
1.插入排序
插入排序基本原理:第一轮将数组第一个数与数组其他数进行比较,找出最小的数并与第一个数交换位置;第二轮开始从第二个数开始,并与其后面的数进行比较,找出最小并交换,以此类推
int a[]={38,65,97,76,13,27,49};//以此数组为例
void function(int* a,int length)
{
int flag,min,temp;
for(int i=0;i<length;++i)
{
temp=a[i];
flag=i;
for(int j=i+1;j<length;++j)
{
if(temp>a[j])
{
temp=a[j];
flag=j;
}
}
if(flag>i)
{
a[flag]=a[i];
a[i]=temp;
}
}
}
2.插入排序
插入排序原理:以数组[38,65,97,76,13,27,49]为例
第一次插入38后:[38]65,97,76,13,27,49
第二次插入65后:[38 65]97,76,13,27,49
第三次插入97后 : [38 65 97]76,13,27,49
第四次插入76后:[38 65 76 97] 13,27,49
第五次插入13后:[13 38 65 76 97] 27 49
第六次插入27后:[13 27 38 65 76 97] 49
第七次插入49后:[13 27 38 49 65 76 97]
func(int*a,int length)
{
for(int i=1;i<length;++i)
{ j=i;
while(j>=1&&a[j]<a[j-1])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
--j;
}
}
}
3.冒泡排序
原理:每轮从第一个数开始,相邻两个数以此比较,如果前面比后面小,则继续比较;若后面比前面大,则交换位置。直至比较n-1轮。
void func(int* a,int length)
{
int temp;
for(int i=1;i<length;++i)
for(int j=0;j<length-i;++j)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
4.归并排序
原理:“归”代表递归的意思,“并”代表合并。对于给定一组数组,先将每两个相邻长度为1的子序列进行归并,得到n/2个长度为2或1的有序子序列,再将其两两归并,反复执行此过程,直到得到有序序列
5.快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。
void sort(int* a, int low, int high)
{
if (low >= high)
return;
int key = a[low];
int i = low;
int j = high;
while (i < j)
{
while (j)
{
if (key > a[j])
{
a[i] = a[j];
a[j] = key;
break;
}
--j;
}
++i;
while (i)
{
if (key <= a[i])
{
a[j] = a[i];
a[i] = key;
break;
}
++i;
}
--j;
}
sort(a, low, i - 1);
sort(a, i + 1, high);
}
sort(a,low,i-1); //左边部分比右边小,所以再对左边部分做递归快速排序
sort(a,i+1,high); //右边部分普遍比左边大,所以再对右边部分做快速递归排序
}
快排的递归截止条件就是已按顺序排列则程序不再执行
6.希尔排序
原理:将待排序数组分成多个子序列,每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,待整个排序序列“基本有序后”,对所有元素再进行一次直接插入排序
7.堆排序
原理:堆排序主要分为两个过程->1.构建堆 2.交换堆顶元素与最后一个元素的位置
http://jingyan.baidu.com/article/5225f26b057d5de6fa0908f3.html