求助!将数组中的0拖后。

poorbug 2005-01-30 02:11:10
比如一个数组的元素为“0,1,9,0,7,0,4,5,0”
想把为0的元素找出来,放后面。
算法实现排序后的结果应为:“1,9,7,4,5,0,0,0,0”
请大家指教,谢谢!!!
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkrich7 2005-01-31
  • 打赏
  • 举报
回复
void f(int a[],int n)
{
int i,j;
for(i = 0; i < n && a[i] != 0; i++)
;/*跳过开头的非零数*/
j = i;
for(; i < n; i++)
if(a[i] != 0){
a[j]=a[i];
j++;
}/*将非零数向前排*/
for(;j<n;j++)
a[j]=0;/*数组末尾补零*/
}
zhengwei1984222 2005-01-30
  • 打赏
  • 举报
回复
main()
函数中调用参数写错了,应为zero_to_last_sort(arr,10);
zhengwei1984222 2005-01-30
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
void zero_to_last_sort(int *arr , int size)
{
int zero_num = 0;
int zero_index = 0;
for (int i=0;i < size ; i++ )
{
if ( arr[i] == 0 ){
zero_num++;
if (zero_num == 1)
zero_index = i;
}
else{
if (zero_num != 0)
{
swap(arr[zero_index] , arr[i] );
if (zero_num != 1)
zero_index++;
else
zero_index = i;
}
}
}
}

void main()
{
int arr [10] = {0,0,1,9,0,7,0,4,5,0};
zero_to_last_sort(arr,9);
for (int i = 0 ;i<=9;i++)
{
cout<<arr[i]<<" ";
}
}

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧