将一个数组中的元素进行倒位有多种方法可以实现,利用不同的方法进行,选择最有效最实用的方法是提高效率的重要原因。
以下有两种方法,均实现了元素的倒位,分别是一般的方法和利用指针进行冒泡排序法,在一般方法中,利用数组中左边的数和右边的数的大小不同进行交换,完成数组元素的倒位。
在冒泡法中,利用相邻的两个元素不同大小进行交换,知道将第一个最大的元素排到最后的位置,以此类推,使所有的元素完成倒位,完成倒位。
#include<stdio.h>
void printarr(int *arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d", *(arr+i));
}
}
void Bubble(int *arr, int sz)
{
int *start = arr;
int *end = arr + sz - 1;
while (start < end)
{
int *cur = start;
while (cur<end)
{
if (*cur > *(cur + 1))
{
int tmp = *cur;
*cur = *(cur + 1);
*(cur + 1) = tmp;
}
cur++;
}
end--;
}
}
int main()
{
int ar[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(ar) / sizeof(ar[0]);
Bubble(ar, sz);
printarr(ar,sz);
system("pause");
return 0;
}
#include<stdio.h>
#include<assert.h>
void my_strcp(int * lift,int* right)
{
assert(lift != NULL);
assert(right != NULL);
int ret = 0;
while (lift < right)
{
ret = *right;
*right = *lift;
*lift = ret;
lift++;
right--;
}
}
void printarr(int *arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d", *(arr + i));
}
}
int main()
{
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);
my_strcp(arr,arr+sz-1);
printarr(arr, sz);
system("pause");
return 0;
}