数据结构与算法(一) 交换

数据结构与算法(一) 交换

  • 这里所有的算法都不涉及到语言,各种语言中的差别需要读者自行体验,当然也会偶尔涉及

交换

  • 交换是我们在编写程序时,所用到的最为常用的算法之一,但是就是这简单的算法也让人们回味无穷
  • 首先交换的本质是相同的,下面提供两种交换的思路
    • 原本的两个空间的值和第三个空间的值进行交换
      “`c
      void swap_p(int *a,int *b)
      {
      int temp = 0;
      temp = *a;
      *a = *b;
      *b = temp;
      }
这里使用的是C语言中的指针,(注意这里是值交换)
    * 利用运算符和计算机的存储特性,就可以轻松交换我们想要交换的值
    ```c
void swap_pn(int *a,int *b)
{
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}

这里是利用异或运算(相同为1,不同为0),这些值在计算机中存储为一个二进制的序列。
这里我们的加减法运算也可以达到相同效果

void swap_pn(int *a,int *b)
{
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}

这里是完整版代码

#include<stdio.h>
#include<stdlib.h>
#include "tool.h"
//声明
void swap(int a,int b);
void swap_p(int *a,int *b);
void swap_pn(int *a,int *b);
void main11()
{
    int a = 3;
    int b = 4;
    int c = 0;
    swap(a,b);
    printf("swap function:a:%d,b:%d\n",a,b);
    swap_p(&a,&b);
    printf("swap_p function:a:%d,b:%d\n",a,b);
    swap_m(a,b,c);
    printf("swap_m macro:a:%d,b:%d\n",a,b);
    swap_pn(&a,&b);
    printf("swap_pn macro:a:%d,b:%d\n",a,b);
    system("pause");
}
void swap(int a,int b)
{
    int temp = 0;
    temp = a;
    a = b;
    b = temp;
}
void swap_p(int *a,int *b)
{
    int temp = 0;
    temp = *a;
    *a = *b;
    *b = temp;
}
void swap_pn(int *a,int *b)
{
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值