for(i=1;i<20;i++)
{
if(a[i]==0) continue;//定位非零元素
for(k=i-1;k>=0;k--)
if(a[k]!=0) break;//回溯非零元素前面的元素,遇到零元素继续往前查找,直到遇到非零元素,目的在于找到最靠前的零元素与之前定位的非零元素进行交换。这里类似于快速排序,假设之前定位的非零元素前面都是已经交换好的。
if(k==i-1) continue;//判断上面for循环退出的具体原因,即判断非零元素前面是否存在零元素,存在即执行后面的值交换,否则返回继续定位非零元素和零元素
a[k+1]=a[i];
a[i]=0;
}
{
if(a[i]==0) continue;//定位非零元素
for(k=i-1;k>=0;k--)
if(a[k]!=0) break;//回溯非零元素前面的元素,遇到零元素继续往前查找,直到遇到非零元素,目的在于找到最靠前的零元素与之前定位的非零元素进行交换。这里类似于快速排序,假设之前定位的非零元素前面都是已经交换好的。
if(k==i-1) continue;//判断上面for循环退出的具体原因,即判断非零元素前面是否存在零元素,存在即执行后面的值交换,否则返回继续定位非零元素和零元素
a[k+1]=a[i];
a[i]=0;
}