`
sofire
  • 浏览: 146147 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Swap函数的N种写法

 
阅读更多
异或运算中有这样的一个性质:a == a^b^b,
计算过程是:
a = a ^ b
b = b ^ (a^b)
a = (a^b) ^ (b^a^b)

void swap(int* a, int* b)
{    
	//(1)用异或运算
	  
	*a ^= *b;     
	*b ^= *a;     
	*a ^= *b;
	
	*a ^= *b ^= *a ^= *b;
	
	*a ^= (*b ^= (*a ^= *b));
	
	//(2)用加减运算
	   
	*a = *a + *b;
	*b = *a - *b;
	*a = *a - *b;
	
	//2、引入中间变量
	
	int t = *a;
	*a = *b;
	*b = t;
}
分享到:
评论

相关推荐

    C++ Swap函数有几种写法?

    在C++中,`swap`函数有多种不同的实现方式,每种都有其特定的适用场景和优缺点。这里我们将探讨几种常见的`swap`函数实现方法。 1. **基础的赋值交换**: 在C语言中,我们通常使用一个临时变量来交换两个变量的值...

    C++ 中的Swap函数写法汇总

    在C++编程中,`swap`函数是一种用于交换两个变量值的常见操作,它具有广泛的应用,例如在排序算法、容器操作以及数据结构的变换中。这篇文章主要探讨了`swap`函数的不同实现方法,从基本的C语言实现到C++中的模板化...

    C语言函数参数传递的几个问题

    - **示例**: `void swap(int *x, int *y)` 在这个函数中,通过传递`x`和`y`的地址,可以在函数内部直接修改实际传递进来的变量的值。 #### 二、形参数组名与指针变量的一致性 在C语言中,数组名作为函数参数时,...

    冒泡排序的优化写法

    这段代码中,`optimizedBubbleSort`函数实现了优化后的冒泡排序。外层循环控制遍历次数,内层循环则是实际的比较和交换过程。`swapped`标志位用于检测是否需要继续遍历,而`lastExchange`变量则用于记录最后一次交换...

    C语言 指针变量作为函数参数详解

    在C语言中,指针是一种强大的工具,它可以用于在函数之间传递复杂的数据结构,如数组、字符串或动态分配的内存。指针变量作为函数参数可以让函数直接操作存储在其他作用域中的变量,而不是简单地复制变量的值。这种...

    c++数组求平均数函数

    正确的写法应该是: ```cpp for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { if (a[j] > a[j + 1]) { swap(a[j], a[j + 1]); } } } ``` ### 知识点三:计算数组的平均数 **计算平均数的一般步骤**: ...

    c 实现数组和指针的快速排序

    在这个例子中,`swap()`函数用于交换两个元素,`partition()`函数执行分区操作,`quickSort()`函数是递归排序的核心,`printArray()`函数用于输出排序后的数组。在`main()`函数中,我们创建了一个数组并调用`...

    万能makefile写法详解,一步一步写一个实用的makefile

    1-使用wildcard函数来获得当前目录下所有.c文件的列表。 2-make的多目标规则。 3-make的模式规则。 4-用gcc -MM命令得到一个.c文件include了哪些文件。 5-用sed命令对gcc -MM命令的结果作修改。 6-用include命令包含...

    分享C++面试中string类的一种正确写法

    为了实现这一点,我们需要提供构造函数、拷贝构造函数、赋值运算符以及析构函数。在C++11之后,我们还需要考虑移动构造函数和移动赋值运算符,以充分利用RAII(Resource Acquisition Is Initialization)原则和现代...

    C++程序设计试卷及答案2009.1.doc

    7. `swap`函数交换两个参数的值,如果执行`swap(a, b)`,那么a和b的值将会互换,因此结果是`15,10`。 8. 默认参数在函数原型中位于参数序列的最后,允许用户在调用函数时省略部分参数。 9. `min`函数返回两个参数中...

    C++高级程序设计实验报告一

    这里提供了两种类型的`distance`函数实现: 1. **整型坐标距离**: ```cpp int distance(int x1,int y1,int x2=0,int y2=0){ int s; s=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); return s; } ``` 此函数接受...

    cpp代码-模板 泛型 template template

    之所以有两种写法,主要是由于历史原因和语法规则的兼容性。在早期的C++标准中,`typename`主要用于解决依赖于类型的成员访问,而在模板中,两者可以互换使用。现在,尽管推荐使用`typename`来声明模板参数,但`...

    明基(BENQ)2012校园招聘笔试题之C++方向(试题+答案)

    内联函数是一种特殊的函数类型,其主要目的是减少函数调用的开销。当函数被声明为内联时,编译器会在函数调用处直接替换为函数体的内容,而不是执行常规的函数调用流程。这种方式可以显著提高程序运行速度,但可能会...

    C++实现顺序表的方法

    现代写法使用了临时对象`tmp`来避免自赋值的问题,然后通过`swap`函数交换成员变量,以减少内存分配和复制的次数。 析构函数用于释放动态分配的数组,确保没有内存泄漏。 赋值运算符重载也提供了两种实现方式。...

    快速排序迭代版本源代码

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的...

    应届大学生面试技巧嵌入式方面.pdf

    6. **预处理器宏和函数调用**:`#define swap(a,b)`的例子展示了宏的副作用,它会直接影响到传入的变量值。而`swap2()`函数使用临时变量避免了这种问题。面试中可能需要分析宏和函数的差异及其潜在风险。 7. **指针...

    numpy-user-1.11.0.pdf

    - **常见函数的对比**:列出了一些MATLAB和NumPy中常见的函数及其对应的写法。 **5.6 注意事项** - **性能差异**:某些操作在MATLAB和NumPy中可能有不同的性能表现。 **5.7 自定义您的环境** - **配置环境**:...

    冒泡排序法的代码。。

    // 使用C++标准库中的swap函数简化代码 swapped = true; } } // 如果一轮排序中没有发生任何交换,则说明数组已经有序,可以直接退出 if (!swapped) break; } cout ; for (int i = 0; i ; i++) { cout [i...

Global site tag (gtag.js) - Google Analytics