您的位置:首页 > 理论基础 > 数据结构算法

将数组排序,数组中所有的负整数出现在正整数前面(时间复杂度为 O(n), 空间复杂度为 O(1)).

2016-06-25 21:33 363 查看
<pre name="code" class="plain">#include <stdio.h>
#define N 10
void swap (int *a, int i, int j);
int main(void)
{
int a
= {1, -1, -2, 0, -4, -4, -5, 7, 8, -10};
int i = 0;
int j = 0;
int isswap = 0;
for(i = 0, j = N - 1; i != j;)
{
if(isswap == 0)
{
if(a[j] < 0)
{
isswap = 1;
continue;  //不需要移动,就替换当前的值
}
j--; //如果当前值大于0,则移动下标
}
if(isswap == 1)
{
if(a[i] >= 0)
{
swap(a, i, j);
isswap = 0;
}
i++;
}
}

for(i = 0; i < N; i++)
{
printf("%4d", a[i]);
}
puts("\n");
return 0;
}

void swap (int *a, int i, int j)
{
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 排序