首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    将顺序表中非零元素移动到顺序表的前面

    一、问题引入 已知长度为n的线性表A采用顺序存储结构,编写算法将A中所有的非零元素依次移到线性表A的前端 二、分析 直接用两个for循环解决(时间复杂度可能高了点),每查找到一个为0的位置,都在当前位置后面寻找到第一个非零元素的位置...data[MaxSize]; //顺序表的元素 int length; //顺序表的当前长度 }SqList; //顺 序表的类型定义 //将顺序表中的非零元素移动到顺序表的前端...int temp=L.data[i]; L.data[i]=L.data[j]; L.data[j]=temp; break;//跳出最近的这层for循环,防止后面的非零元素继续交换...的第一个元素 for(;j<L.length;i++,j++) { L.data[i]=L.data[j]; } L.length=i; return true; } //将顺序表中的非零元素移动到顺序表的前端...int temp=L.data[i]; L.data[i]=L.data[j]; L.data[j]=temp; break;//跳出最近的这层for循环,防止后面的非零元素继续交换

    44030

    你不可不会的几种移动零的方法

    本文介绍通过「末尾补零」以及「交换零元素与非零元素」的策略来解答此题,供大家参考,希望对大家有所帮助。...解题思路 根据题意,要想把数组中所有 0 移动到数组的末尾,还要保持非零元素的「相对位置」,只需要遍历一遍数组,找出「非零元素」,然后将找出的非零元素替换原数组的元素,原数组中「未替换的元素全部用零去替换...示例 遍历整个数组,找出所有非零元素。 ? 找出所有非零元素 替换 ? 替换 遍历、查找和替换的完整过程,如下动图示。 ?...交换法 由于题目的说明中要求尽量减少操作次数,因此可以通过「遍历查找到非零元素,再交换非零元素与当前数组的第一个零元素」的策略,来减少方法一种的补零操作,从而减少操作次数。...由于 nums[1] 为非零元素,nums[0] 为零元素,因此交换它们。 ? 其完整查找和交换过程,如下动图示。 ?

    31210
    领券