按奇偶数组排序

我写的是辣鸡,参考的是题解。

1.按照模2的结果排序

2.双指针

 1     vector<int> B(A);
 2     int size = B.size();
 3     int t = 0;
 4     for (int i = 0; i <= size - 1; ++i)
 5     {
 6         if (A[i] % 2 == 0)
 7         {
 8             B[t++] = A[i];
 9         }
10     }
11     for (int i = 0; i <= size - 1; ++i)
12     {
13         if (A[i] % 2 == 1)
14             B[t++] = A[i];
15     }
16     return B;

3.无需额外空间的两头遍历

 1 vector<int> B(A);
 2     int size = B.size();
 3     int i = 0, j = size - 1;
 4     while (i < j)
 5     {
 6         if (B[i] % 2 == 1 && B[j] % 2 == 0)
 7         {
 8             int temp = B[j];
 9             B[j] = B[i];
10             B[i] = temp;
11         }
12         else if (B[i] % 2 == 1)
13         {
14             j--;
15         }
16         else if (B[j] % 2 == 0)
17         {
18             i++;
19         }
20         else
21         {
22             i++;
23             j--;
24         }
25     }
26     return B;

 

转载于:https://www.cnblogs.com/zouma/p/11373627.html

你可能感兴趣的:(按奇偶数组排序)