假设数组A[n]的n个元素中有多个零元素,设计一个算法,将A中所有的非零元素依次移到A的前端

1个回答

  • 1.建立数组/链表,初始化数据

    2. 两个指针,一个头指针,初值为null或(数组下标=-1), 一个尾指针指向元素尾部

    头指针指示可交换头部位置(就是 这个指针前面都是交换好的非0元素不用在动了)

    尾指针指向待处理元素

    3.处理步骤 1. 判断尾指针元素是否非0 , 为真: 头指针+1, 头尾元素交换, 继续判断交换后的尾指针是否非0; 为真: 头指针+1, 头尾元素交换,继续判断交换后的尾指针是否非0(重复上面的);为假: 头指针不动,尾指针+1

    4,终结条件, 头尾指针位置相等

    当然这个不是优化算法,可以先判断头指针,如果头指针为非0元素可以直接+1,而不要再交换到尾部在判断在交换回去.