64,654
社区成员
发帖
与我相关
我的任务
分享
int a[10] = {2, 5, -4, 6, -2, 9, -11, 99, 56, -12};
int ilen = sizeof(a)/sizeof(int) -1, i, ipos[2] = {0}, itemp = 0, bfirst = 1;
for(i = 0; i <= ilen; i++){
printf(" i = %d, a[i] = %d \n", i, a[i]);
if(a[i] > 0){
if(bfirst){
ipos[0] = i;
bfirst = 0;
}
ipos[1]++;
}
if(a[i] < 0){
if(ipos[1]){
itemp = a[i];
memmove(&a[ipos[0] + 1], &a[ipos[0]], (sizeof(int)) * ipos[1]);
a[ipos[0]] = itemp;
ipos[0]++;
}
}
}
//int[] arr = new int[]{ -3, 4 ,2 ,-1 ,7 ,3 ,-5 };
// int[] arr = new int[] { -3, -1, -5 };
//int[] arr = new int[] { 3, 4, 2, -1, 7, -3, -5 };
// int[] arr = new int[] { 3, 1, 5 };
// int[] arr = new int[] { 3, 4, 2, -1, 7, -3, 5 };
int[] arr = new int[]{ -3, -4 ,2 ,-1 ,7 ,3 ,-5 };
OutPutArr(arr);
RangeArr(arr);
Console.WriteLine();
OutPutArr(arr);
private static void OutPutArr(int[] arr)
{
foreach (int i in arr)
{
Console.Write(string.Format("{0},", i));
}
}
private static void RangeArr(int[] arr)
{
int k=-1;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
{
if (i > k && i - k > 1)
{
int j=i;
while (j-1>k)
{
int t = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = t;
j--;
}
k =j;
}
else
{
k = i;
}
}
}
}