{
$arrC = array()
while(count($arrA) &&count($arrB)){
/源则/这里不断的判断哪个值小,就将小的值给到arrC,但是到最后肯定昌滑要剩下几个值,
//不是剩下arrA里面的就是剩下arrB里面的而且这几个有序的值,肯定比arrC里面所有的值都大所以使用
$arrC[] = $arrA['0'] <$arrB['0'] ? array_shift($arrA) : array_shift($arrB)
}
returnarray_merge($arrC, $arrA, $arrB)
}
//归并排序主程序
functional_merge_sort($arr){
$len=count($arr)
if($len <= 1)
return $arr//递归结束条件,到达这步的时候,数组就只剩下一个元素了,也就是分离了数组
$mid = intval($len/2)//取数组中间
$left_arr = array_slice($arr, 0, $mid)//拆分数组0-mid这部分给左边left_arr
$right_arr = array_slice($arr, $mid)//拆分数组mid-末尾这耐裂腊部分给右边right_arr
$left_arr = al_merge_sort($left_arr)//左边拆分完后开始递归合并往上走
$right_arr = al_merge_sort($right_arr)//右边拆分完毕开始递归往上走
$arr=al_merge($left_arr, $right_arr)//合并两个数组,继续递归
return $arr
}
$arr = array(12, 5, 4, 7, 8, 3, 4, 2, 6, 4, 9)
print_r(al_merge_sort($arr))
#include <iom16v.h>
#include <macros.h>
#define 芹派 uchar unsigned char
#define uint unsigned int
#include "xianshi.c"
uint mega16_ad()
{
uint addata
DDRA&=~BIT(PA0)
PORTA&=~BIT(PA0)
ADMUX=0
ADCSR=0X80
ADCSR|=BIT(ADSC)
while(!(ADCSR&(BIT(ADIF))))
addata=ADCL
addata=addata+ADCH*256
return addata
}
void main()
{
uint ada,i,ad[4]
while(1)
{
ada=mega16_ad()//999 0999
for(i=0i<吵卜4i++)
{
ad[3-i]=ada%10
ada=ada/10
}
for(i=0i<4i++)
{
show(ad[i],i)
delay(2) DDRA|=BIT(3)
DDRA|=BIT(4)
DDRB=0XFF
}
}
}
=================================================================
<xianshi.c>
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}
void delay(uint ms)
{
uint i,j
for(i=0i<msi++)
{
for(j=0j<1141j++)
}
}
void show(uchar j,uchar k)
{
DDRA|=BIT(3)
DDRA|=BIT(4)
DDRB=0XFF
PORTA|=BIT(3)
PORTB=table[j]
PORTA&=~BIT(3)
PORTB=0XFF
PORTB&=~BIT(k)
PORTA|=BIT(4)
PORTA&嫌碰贺=~BIT(4)
delay(1)
所测电源的地是一个参考袜此点,如果只接这衫好陆一根线是没有问题的.问题出在所测电源的被测电压端.如果这根线与所测电或顷源的地的电压超出单片机允许最大输入电压就会烧坏单片机,如果不超就不会烧坏单片机欢迎分享,转载请注明来源:内存溢出
评论列表(0条)