”逆置数组“这个问题同学们可以视为“交换数组”的升级版,同样可以用到把醋和油换碗的思路。
现在我们有这样一个数组arr:11 22 33 44 55
我们想让数组打印成这样:55 44 33 22 11
int tmp;//空碗
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
空碗交换方法在学计算机的过程中真的非常实用,现在我们的代码是不是就手到擒来了
//封装一个逆排序函数
void rank(int arr[],int sz)
{
int left = 0;
int right = sz - 1;
//如果数组元素个数是单数,当左下标等于右下标其实就是指向相同的一个数,那就没必要交换
while (left < right)
{
//交换元素
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
//逆序数组
int main()
{
int arr[] = { 11,22,33,44,55 };
int sz = sizeof(arr) / sizeof(arr[0]);
rank(arr,sz);//调用自定义的排序函数
//打印逆置后的数组
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
good good study!
day day up!