DC-6:数组逆序的两种思路

来源:互联网 发布:腾讯大数据平台优势 编辑:程序博客网 时间:2024/06/05 14:20
#include <stdio.h>
#define N 10


// for循环
int main1()
{
int a[N] = {0,1,2,3,4,5,6,7,8,9};

int i;
int tmp;
for (i = 0; i < N/2; i++)
{
tmp = a[i];
a[i] = a[N-i-1];
int main()
{
int a[N] = {0,1,2,3,4,5,6,7,8,9};

int min = 0;    // 数组第一个元素的下标
int max = N-1;  // 数组最后一个元素的下标
int tmp;
while (min < max)
{
/*
tmp    = a[min];
a[min] = a[max];
a[max] = tmp;
min++;
max--;
*/
tmp      = a[min];
a[min++] = a[max];
a[max--] = tmp;
}
int i;
for (i = 0; i < N; i++)
{
printf ("%d\n", a[i]);
}

return 0;
}


a[N-i-1] = tmp;}for (i = 0; i < N; i++){printf ("%d\n", a[i]);}return 0;}
用for循环时,从第一个数到中间一半开始循环,依次交换收尾相对应的值,N/2无论奇数个数还是偶数个数
,都是只取一半。


int main()

{
int a[N] = {0,1,2,3,4,5,6,7,8,9};

int min = 0;    // 数组第一个元素的下标
int max = N-1;  // 数组最后一个元素的下标
int tmp;
while (min < max)
{
/*
tmp    = a[min];
a[min] = a[max];
a[max] = tmp;
min++;
max--;
*/
tmp      = a[min];
a[min++] = a[max];
a[max--] = tmp;
}
int i;
for (i = 0; i < N; i++)
{
printf ("%d\n", a[i]);
}

return 0;
}
用while循环时,可设一个变量也可设两个。两个变量,一个指向头,一个指向末尾,每次指头的小于
指向末尾的,说明他们还没“相遇”,一旦相遇,说明已经交换完,需要注意的使,每次交换完,对于
指向的要++或者--。
比较两种方法,第一种对于所有的对应交换的值很方便,但对于跳跃或者选择性的整体交换不够方便,
引入变量,对于程序的变量是增多了,但对于程序的运行便方便。相较来说,程序运行的思想是需要最高
的效率,巧妙的引用变量可以使问题变得简单。
原创粉丝点击