<pre name="code" class="plain">#include <stdio.h>
#define N 10
void swap (int *a, int i, int j);
int main(void)
{
int a[N] = {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;
}
将数组排序,数组中所有的负整数出现在正整数前面(时间复杂度为 O(n), 空间复杂度为 O(1)).
最新推荐文章于 2022-11-06 16:17:54 发布