急 请前辈帮忙快考试了,有几道关于数据结构的题不会

来源:百度知道 编辑:UC知道 时间:2024/04/30 16:06:28
已知线性表(a0,a1,a2,…an)顺序存储,每个元 素均为非零整数,试编写高效算法将所有负数元素移动到所有正数元素之前,要求至多使用一个附加单元。(用C语言实现)

先扫一遍,确定正负的数量,和0的位置
然后把0放到正确的位置上,就是和那个位置交换
然后就是从两边向中间0的位置扫描,如果碰到左边大于0,右边小于0的,就把两个交换,直到中间结束
总共2边扫描,O(n)级别,看其他人还有什么高见

不用先扫一遍的,其实就是个以0为比较的一次快排,附加一个值为0的变量。
直接
“从两边向中间位置扫描,如果碰到左边大于0,右边小于0的,就把两个交换,直到中间结束”