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 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循环时,可设一个变量也可设两个。两个变量,一个指向头,一个指向末尾,每次指头的小于
指向末尾的,说明他们还没“相遇”,一旦相遇,说明已经交换完,需要注意的使,每次交换完,对于
指向的要++或者--。
比较两种方法,第一种对于所有的对应交换的值很方便,但对于跳跃或者选择性的整体交换不够方便,
引入变量,对于程序的变量是增多了,但对于程序的运行便方便。相较来说,程序运行的思想是需要最高
的效率,巧妙的引用变量可以使问题变得简单。
#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循环时,可设一个变量也可设两个。两个变量,一个指向头,一个指向末尾,每次指头的小于
指向末尾的,说明他们还没“相遇”,一旦相遇,说明已经交换完,需要注意的使,每次交换完,对于
指向的要++或者--。
比较两种方法,第一种对于所有的对应交换的值很方便,但对于跳跃或者选择性的整体交换不够方便,
引入变量,对于程序的变量是增多了,但对于程序的运行便方便。相较来说,程序运行的思想是需要最高
的效率,巧妙的引用变量可以使问题变得简单。
阅读全文
0 0
- DC-6:数组逆序的两种思路
- 实现数组逆序排列的两种方法
- 逆序对的两种算法【树状数组 / 归并排序】
- 递归的两种思路
- 关于逆序对的两种做法(归并排序+树状数组c++)
- 归并排序,树状数组 两种方法求逆序对
- 单链表的两种逆序算法
- 求逆序对数的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反序,逆序的两种方法
- poj 2838 Cow Sorting 树状数组 两种思路
- 实现断点续传的两种思路
- 实现断点续传的两种思路
- 实现断点续传的两种思路
- 实现断点续传的两种思路
- 二维数组访问问题
- JavaSE_笔试题_判断题1
- c++模块间传递参数的一些经验教训
- Caffe源码解析2:SycedMem
- C++ 多态 (virtual)
- DC-6:数组逆序的两种思路
- Lua学习-语句
- Android最佳性能实践(一)——合理管理内存
- Caffe源码解析3:Layer
- 算法学习(贪心算法一)活动选择问题
- Caffe源码解析4: Data_layer
- Android最佳性能实践(二)——分析内存的使用情况
- 浅谈C++ 标准库中的异常 —— stdexcept类
- Caffe源码解析5:Conv_Layer