首页
学习
活动
专区
工具
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循环,防止后面的非零元素继续交换

    43030

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

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

    33400
    领券