版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Strong_HCyouth/article/details/53410725
因为开头并不知道是要传指针还是传数组,所以int n = sizeof(arr)/sizeof(arr[0]);在这里是错误的
定义两个指针,初始分别指向数组头节点和尾节点,从两头分别开始遍历
#include
#include
#include
using namespace std;
void Fun(int arr[],int n)
{
int i = 0;
int j = n - 1;
while(i < j)
{
if(i < j && arr[i]&2 != 0)
{
i++;
if(i < j && arr[j]&2 == 0)
{
j--;
}
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
}
int main()
{
int i = 0;
int n = 9;
int arr[] = {1,2,3,4,5,6,7,8,9};
Fun(arr[],n);
for(i = 0;i < 9;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
#include
#include
using namespace std;
void Fun(int arr[],int n)
{
int i = 0;
int j = n - 1;
while(i < j)
{
if(i < j && arr[i]&2 != 0)
{
i++;
if(i < j && arr[j]&2 == 0)
{
j--;
}
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
}
int main()
{
int i = 0;
int n = 9;
int arr[] = {1,2,3,4,5,6,7,8,9};
Fun(arr[],n);
for(i = 0;i < 9;i++)
{
printf("%d ",arr[i]);
}
return 0;
}