1.冒泡排序
/**< 冒泡排序从小到大排序*/
void bubble_pos_sort(u8 *data,u16 len)
{
u8 i,j,buff;
for(i=0;i<len;i++){
for(j=0;j<len-i-1;j++){
if(data[j] > data[j+1]){
buff = data[j];
data[j] = data[j+1];
data[j+1] = buff;
}
}
}
}
/**< 冒泡排序从大到小排序*/
void bubble_rever_sort(u8 *data,u16 len)
{
u8 i,j,buff;
for(i=0;i<len;i++){
for(j=0;j<len-i-1;j++){
if(data[j] < data[j+1]){
buff = data[j];
data[j] = data[j+1];
data[j+1] = buff;
}
}
}
for(i=0;i<len;i++){
printf("%4d",data[i]);
}
printf("\r\n");
}
- 二分法查找
/**< 二分法查找函数:查找的对象必须是从小到大排序了的 */
/** \brief
*
* \param dest:查询的目标数据
* \param src:源数据(数组)
* \param len:数据长度
* \return 1:找到对应的数据,0:反之
*
*/
u8 binary_serch(u8 dest,u8 *src,u16 len)
{
u8 low,high,mid,serch_flag;
u8 is_exist=0;
low = 0;
high = len-1;
while(low<high)
{
mid = (low + high)/2;
if(dest<src[mid])
{
high = mid - 1;
}else if(dest>src[mid]){
low = mid +1;
}else if(dest == src[mid]){
is_exist = 1;
break;
}
}
return is_exist;
}