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

1算法设计思想(可文字叙述或画流程图)
2运行结果(需将结果截图到该文档中,图中文字、字母、符号应清晰可见)

谢谢!!

1.建立数组/链表,初始化数据
2. 两个指针,一个头指针,初值为null或(数组下标=-1), 一个尾指针指向元素尾部
头指针指示可交换头部位置(就是 这个指针前面都是交换好的非0元素不用在动了)
尾指针指向待处理元素
3.处理步骤 1. 判断尾指针元素是否非0 , 为真: 头指针+1, 头尾元素交换, 继续判断交换后的尾指针是否非0; 为真: 头指针+1, 头尾元素交换,继续判断交换后的尾指针是否非0(重复上面的);为假: 头指针不动,尾指针+1
4,终结条件, 头尾指针位置相等
当然这个不是优化算法,可以先判断头指针,如果头指针为非0元素可以直接+1,而不要再交换到尾部在判断在交换回去....追问

能不能把对应的程序代码帮我写下哈,我不是很懂,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
先将数组元素排序,然后找到第一次为0的位置,再找到最后一次为0的位置,然后再定义一个数组,将0元素先赋到数组中,再讲其他非零元素赋到数组中。
第2个回答  2011-12-08
main()
{ for(i=0,j=0;i<n;i==)
{ if(a[i])==0)
{t=a[j];a[j]=a[i];a[i]=t;
j++;}

}
相似回答