两个数交换问题

在很多编程语言中,我们大部分使用的都是值传递,然而值传递并不能真正地改变参数的数值。

下列值传递方法无法实现两个数的交换:

void swap(int a,int b)
{
      int t;
      t = a;
      a = b;
      b = t;
 }

C语言版:

//指针
void swap(int *a,int *b)
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}

C++:

//通过引用实现,实质上是传送地址行参来实现两个整数的交换的
void swap(int &a,int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

Java版:

//可以将你要交换的参数作为对象的一个变量来交换
class A{
 int n;
}

public static void swap(A x,A y){
    A temp = new A();
    temp.n = x.n;
    x.n = y.n;
    y.n = temp.n;
}
//利用数组

void   swap(int[] a,int x, int y )   {
        int   temp   =   a[x];
        a[x]   =   a[y];
        a[y]   =   temp;
}
时间: 2024-10-12 12:47:25

两个数交换问题的相关文章

java 两个数交换问题

大家其实知道可以用异或来实现交换  学过C的人看如上的程序  一看以为肯定交换了 但是注意 C对表达式的计算顺序和Java是不同的  java是从左往右的  所以不对 简单修改就可以了: 交换连个数的方法 一.使用中间量  (这个就不多说了) 二.使用异或(如上) 三.使用加减法 这个不需要解释吧 java 两个数交换问题,布布扣,bubuko.com

位运算和关于两个数交换的多种方法

我们知道,位运算在计算中有着广泛的应用. 在计算机的各种编程语言中位运算也是一种不可缺少的运算,尤其是在计算机的底层实现代码中. 以下我们就来介绍一下位运算. 1.左移运算<<  左移右移都是移动二进制数 0000-0000 0000-0000 0000-0000 0000-1100     =12 向左移动一位变为(右边缺几位就补几个0) 0000-0000 0000-0000 0000-0000 0001 1000       =24 再向左移一位 0000-0000 0000-0000

两个数交换的三种方式

记得刚开始学C++的时候,也做过两个数的交换,当时只用过下面的第一种和第三种方法,今天在看传智播客Java视频教程的时候,学到了另两种方式 假设a=10,b=20,交换a,b的值 方法一,使用第三方的变量,也是最常用的方法 int c=a; a=b; b=a; 方法二,位异或运算 a=a^b; b=a^b; //a^b^b=a a=a^b; //a^b^a=b 方法三,变量相加 a=a+b; b=a-b; a=a-b; 方法四,一句话搞定 b=(a+b)-(a=b); 在实际的工作中常用的还是第

两个数交换的六种方法

一般我们交换两个数常借助第三个变量,那么不借助第三个变量怎么交换呢,今天来试一试. 第一种方法,借助第三个变量 1 int c =a; 2 a = b; 3 b =c; 第二种方法 1 a= a + b -(b = a); 第三种方法 1 b = a + (a = b)*0; 第四种方法 1 a = a + b; 2 b = a -b; 3 a = a - b; 第五种方法,不过需要注意两个相乘数比较大的话容易超出int型的范围. 1 a = a*b; 2 b = a/b; 3 a = a/b;

6.两个数交换

package test; public class TestChange { public static void main(String[] args) { int num1=5; int num2=6; System.out.println("交换前:"); System.out.println("num1:"+num1); System.out.println("num2:"+num2); int temp=num1; num1=num2

两个数交换

void Swap(int *a, int *b) { int c = *a; *a = *b; *b = c; }

很有意思的一种两个数交换的方法

1 int i = 26; 2 int j = 47; 3 i = i ^ j; 4 j = i ^ j; 5 i = i ^ j; 6 System.out.println(i); 7 System.out.println(j); 8 }

用多种方法交换两个数的值

今天上了C语言课,老师讲了有关交换两个数的问题.课后,经过自己的思考和总结,我得出了以下几种方法.虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见.其他的方法待补充奥... 法一: 大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换.下面是实现它的代码: #include<stdio.h> int main() {   int num1=5,num2=10,tmp=0;   printf("before:\n");   prin

java交换两个数的常见方法及效率测试

原文地址--http://blog.csdn.net/qq525099302/article/details/47294443 论两个数的交换的重要性 讨论交换两个数的方法对某些人来说无聊,但某些人很乐意探究,甚至某些面试官喜欢用这个做文章.刚出来找工作笔试的时候我也碰到与之相关的问题. 常见的两个数交换的方法 边赋值边运算 加减减交换 用中间变量交换 异或交换 下面是代码 public class Test { public static void main(String[] args) {