/*列*/
#include "stdint.h"
#define __ucode uint8_t
#define __uaddr uint32_t
#define sort_big_operation(a,b,c) \
do{ \
if( (a) > (b) ) \
{ \
(c) = (a); \
(a) = (b); \
(b) = (c); \
} \
}while(0)
static void __arr_tow_sort(__ucode *arr )
{
//这里看能不能找到直接交换的内核指令
__ucode c= 0;
// if(arr[0] > arr[1])
// {
// c = arr[0];
// arr[0] = arr[1];
// arr[1] = c ;
//
// }
sort_big_operation( arr[0] , arr[1] , c);
}
void __arr_sort(__ucode *arr, __uaddr len )
{
__uaddr i = 0;
__uaddr j = 0;
__uaddr odd = 0;
__uaddr even = 0;
if( len % 2 == 1)
{
even = len/2 ;
}
else
{
even = len/2 - 1;
}
odd = len/2 ;
for( i = 0 ; i < len ; i++) //o = len*(len/2)
{
if(i % 2 ==0 )
{
for( j = 0; j < odd ;j++)
{
__arr_tow_sort(arr+j*2);
}
}
else
{
for( j = 0; j < even ; j++)
{
__arr_tow_sort(arr+j*2+1);
}
}
}
}
//__ucode buf[100] ={0}; /*测试数组*/
//void arr_decompose(void )
//{
// __ucode i = 0;
// for( i = 0 ; i< 100 ; i++)
// {
// buf[i] = 100 -i;
// }
// __arr_sort( buf , 100);
//
//}
运算复杂度为len*len/2的 排序算法
最新推荐文章于 2024-09-14 19:18:15 发布