|
C语言实现将一个数组插入到另一个数组的效率问题
[复制链接]
本帖最后由 littleshrimp 于 2015-4-22 16:06 编辑
为了实现某些功能,写了一个小函数,将一个数组插入到另一个数组,试了一下还是很实用的
效率上估计不会高了,就是把数组整体下移,然后再把要插入的数据粘贴到指定位置,
哪位高手还有变态些的方法没?
- uint8_t insert_buffer[100];
- uint8_t insert_buffer_index = 0;
- uint8_t buffer[100];
- uint8_t buffer_index = 0;
- //将insert_buffer里的数据插入到bufferr的insert_index位置,buffer的数据整体下移,buffer_length表示buffer中的有效数据长度,insert_buffer_length是要插入的数据长度
- void insert_array1(uint8_t *buffer,uint32_t buffer_length,uint32_t insert_index,uint8_t *insert_buffer,uint16_t insert_buffer_length)
- {
- uint32_t i = buffer_length;
- do
- {
- //将buffer数据向后移动insert_buffer_length个字节
- buffer[i + insert_buffer_length] = buffer[i];
- }while(i-->insert_index);
- for(i=0;i<insert_buffer_length;i++)
- {
- //将insert_buffer数据复制到buffer指定位置
- buffer[insert_index + i] = insert_buffer[i];
- }
- }
- int main(void)
- {
- uint32_t i;
- //创建30~39的数组
- for(i=0;i<10;i++)
- {
- buffer[buffer_index++] = 30 + i;
- }
- //创建0~10的数组
- for(i=0;i<10;i++)
- {
- insert_buffer[insert_buffer_index++] = i;
- }
- //将insert_buffer从buffer的第2个索引入插入
- insert_array1(buffer,buffer_index,2,insert_buffer,insert_buffer_index);
- // uint32_t len = get_driver(g_buffer);
- asm("nop");
- }
复制代码
|
|