求数组逆置(数组与指针实现)

数组逆置

??基本思路:

??将a[0]与a[n-1]对换,再将a[1]与a[n-2]对换…直到将a[int(n-1)]与a[int((n-1)/2)-1]对换。

??如图所示:


??使用数组来实现:


  1. //数组实现逆置
  2. void conver_arr(int c,int a[])
  3. {
  4. int low =0;
  5. int high = c -1;
  6. for(int i =0; i < c/2; i++)
  7. {
  8. if(low < high)
  9. {
  10. int temp = a[c - i -1];
  11. a[c - i -1]= a[i];
  12. a[i]= temp;
  13. }
  14. }
  15. }

??使用指针来实现:

  1. //指针实现逆置
  2. void conver_point(int c,int*a)
  3. {
  4. int*start;
  5. start = a;
  6. int*end;
  7. end= a + c -1;
  8. while(start <end)
  9. {
  10. int*temp =*start;
  11. *start =*end;
  12. *end= temp;
  13. *start++;
  14. *end--;
  15. }
  16. }

??其他代码:

  1. //打印输出信息
  2. void arr_print(int*a)
  3. {
  4. for(int i =0; i <10; i++)
  5. {
  6. printf("a[%d] = %d\n", i+1, a[i]);
  7. }
  8. }
  9. int main(void)
  10. {
  11. int arr_value[10]={12,34,5,67,3,54,6,31,46,1};
  12. int len =sizeof(arr_value)/sizeof(arr_value[0]);
  13. conver_arr(len, arr_value);
  14. conver_point(len, arr_value);
  15. arr_print(arr_value);
  16. return0;
  17. }


??运行结果如下图所示:

时间: 2024-10-10 13:51:42

求数组逆置(数组与指针实现)的相关文章

C 求最大数,逆置数组 冒泡法

求第一,第二,第三大的值 #include <stdio.h> int main(){     int arr1[10]={1,3,2,5,4,7,5,6,9};      int max        =0;     int second_max =0;     int third_max  =0; for(int a=0;a<10;a++){ if(arr1[a] > max){ third_max  =second_max; second_max =max; max     

九度OJ—题目1055:数组逆置

题目描述: 输入一个字符串,长度小于等于200,然后将数组逆置输出. 输入: 测试数据有多组,每组输入一个字符串. 输出: 对于每组输入,请输出逆置后的结果. 样例输入: hdssg 样例输出: gssdh 来源: 2011年哈尔滨工业大学计算机研究生机试真题 答疑: 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7779-1-1.html #include<stdlib.h> #include<stdio.h> #include

用异或操作实现的交换函数用以实现数组逆置中须要注意的问题

用元素交换函数实现数组逆置非常easy,如以下代码:(数组左右元素交换) #include<iostream> #include<stdlib.h> using namespace std; void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } int main() { int a[5] = { 1, 2, 3, 4, 5 }; int lenth = sizeof(a) / sizeof(a[0]);

哈工大机考:数组逆置

时间限制:1秒 空间限制:32768K 题目描述 输入一个字符串,长度小于等于200,然后将数组逆置输出. 输入描述: 测试数据有多组,每组输入一个字符串. 输出描述: 对于每组输入,请输出逆置后的结果. 输入例子: hdssg 输出例子: gssdh 代码: #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(){ char a[210]; w

用异或操作实现的交换函数用以实现数组逆置中需要注意的问题

用元素交换函数实现数组逆置很简单,如下面代码:(数组左右元素交换) #include<iostream> #include<stdlib.h> using namespace std; void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } int main() { int a[5] = { 1, 2, 3, 4, 5 }; int lenth = sizeof(a) / sizeof(a[0]); in

表逆置[数组和链表]

对于数组(也可为线性表),逆置就是首尾数据两两交换,首先计算交换的次数: 中间需要一个临时变量暂存数据,看似简单,其实有点绕,关键还是数组下标从0开始,这一点很麻烦!这种小题最练基础! 完整代码: #include <iostream> using namespace std; int main() { int a[]={1,2,3,4,5,7,8,9}; int len=sizeof(a)/sizeof(int);/*计算数组长度*/ int temp;/*临时变量*/ for(int i=

数组逆置

1 public class Reverse { 2 3 /** 4 * 逆置函数 5 * 6 * @param array 7 * 需要逆置的数组 8 * @return 逆置后的数组 9 */ 10 public int[] reverse(int[] array) { 11 int size = array.length; 12 for (int i = 0; i < size / 2; i++) { 13 /* array[size - 1 - i]:下标为i值的对称下标的值 */ 14

(LeetCode)Rotate Array --- 逆置数组

Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. Note: Try to come up as many solutions as you can, there are at least 3 different ways to solve this pr

【LeetCode】10.Array and String —Reverse String 字符数组逆置

Write a function that reverses a string. The input string is given as an array of characters char[]. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. You may assume all the