Dim mid As Integer = 0
If first<last Then
mid = (first+last)\ 2
MergeSort(Array, first, mid)
MergeSort(Array, mid+1, last)
Merge(Array, first, mid, last)
End If
End Sub
/*
以下示例代码实现了归并 *** 作。array[]是元素序列,其中从索引p开始到q位置,乎陆按照升序排列,同时,从(q+1)到r也已经按照升序排列,merge()函桐判数将把这两岁轮顷个已经排序好的子序列合并成一个排序序列。结果放到array中。
*/
/**
* 0 <= p <= q <r, subarray array[p..q] and array[q+1..r] are already sorted.
* the merge() function merges the two sub-arrays into one sorted array.
*/
void Merge(int array[], int p, int q, int r)
{
int i,k
int begin1,end1,begin2,end2
int* temp = (int*)malloc((r-p+1)*sizeof(int))
begin1 = p
end1 = q
begin2 = q+1
end2 = r
k = 0
while((begin1 <= end1)&&( begin2 <= end2))
{
if(array[begin1] <= array[begin2]){
temp[k] = array[begin1]
begin1++
}
else
{
temp[k] = array[begin2]
begin2++
}
k++
}
while(begin1<=end1 || begin2<=end2)
{
if(begin1<=end1)
{
temp[k++] = array[begin1++]
}
if(begin2<=end2)
{
temp[k++] = array[begin2++]
}
}
for (i = 0i <=(r - p)i++)
array[p+i] = temp[i]
free(temp)
}
CCON = 0//初始化PCA控制寄存器,PCA定时器停止,清除CF标志,清除模块中断标志CL = 0 //复位PCA计数寄存器
CH = 0
CMOD = 0x02 //设置PCA时钟源为sysclock/2,禁止PCA定时器溢出中断
value = T100KHz //计算PCA输出100K方波应设定的值
CCAP0L = value //将值得低8位赋给CCAP0L
CCAP0H = value >>8 //高8位赋给CCAP0H
value += T100KHz //累加,为下一次赋值做好准备。//这个地方绝对不能注释掉,产生方波就靠它了。腔扰
CCAPM0 = 0x4d //PCA模块1为16位定时器模式,同时反转CEX0(P1.3)口
CR = 1 //PCA定时器开始工作
EA=1 //开中断
========================================================
void pca_isr()interrupt 7 using 1
{
CCF0=0
CCAP0L=value
CCAP0H=value>>8
//value +=T100KHZ//累加,这个地方也绝对不能注释掉。要产生方消圆如波,拿启就得每次在原值的基础上加上同样的值。
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)