当我第一次开始工作时,一个大型机汇编程序程序员向我展示了他们如何在不使用传统算法的情况下转换为值:
a = 0xBABE
b = 0xFADE
temp = a
a = b
b = temp
他们用来交换两个值的东西--从一个位到一个大缓冲区--是:
a = 0xBABE
b = 0xFADE
a = a XOR b
b = b XOR a
a = a XOR b
现在
b == 0xBABE
a == 0xFADE
它交换了2个对象的内容,而不需要第三个临时保存空间。
我的问题是:这个异或交换算法还在使用吗?它在哪里仍然适用。
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{
int temp=*x;
*x=*y;
*y=temp;
cout<<*x<<endl<<*y<<endl<<"Bro"<<endl;
}
int main()
{
int a=10,b=5;
swap(&a,&b);
cout<<"HI"<<
我在这个例子中提供的实际函数不是问题。我只想知道在函数中使用变量作为参数之后,如何保存变量的值。我试着做一个非常简单的函数来转换两个变量的值。我知道如何在没有函数的情况下完成这个任务,但是我想用一个函数来概括这个解决方案。
我试着写了以下代码,
let a = 3;
let b = 4;
const switchItems = (c,d) => {
var temp = c;
c = d;
d = temp;
}
switchItems(a,b);
我预计a为4,b为3,但变量与函数前相同。
我不在乎如何使用我使用的特定交换函数来实现这一点,我只想知道如何在不
#include <stdio.h>
void swap1(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
void swap2(int *a, int *b)
{
int *temp = a;
a = b;
b = temp;
}
void swap3(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
main()
{
int a = 9, b = 4;
printf(
假设我有两个变量。
x = 1
y = 2
最终的结果应该是:
x = 2
y = 1
我考虑了以下几种方法:
temp = x // clone x
x = y
y = temp
或(异或交换)
x = x XOR y
y = x XOR y
x = y XOR x
我想得到一个关于低水平记忆等的答案.
,最快的方法是什么?
注:
我想得到一个额外的答案,假设,没有副作用(代码,cpu),哪个是最快的,或者还有其他更快的?
大体上,每当我调用此方法对数组进行排序时,它就会停止,就像在等待响应一样。你知道为什么它不工作吗?
public void bubbleSort(){
boolean finished = false;
boolean swapOccurred = false;
int i = 0;
int next = i + 1;
while (finished == false)
{
for (; i < theArray.length - 1; i++)
{
if (theArray[i]
我想写一个函数来交换两个整数。尽管一切看起来都很好,但没有交换值。
这是我的代码:
#include <iostream>
using namespace std;
void mySwap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5, b = 4;
mySwap(a, b);
cout << a << ' ' << b << endl;
return 0;
}
Outpu
我想清楚地讨论我的问题。
我有一个函数来交换两个变量的值。
public static void Swap<T>(ref T first, ref T second)
{
T temp = first;
first = second;
second = temp;
}
我在代码中使用它,如下所示:
Swap<DateTime>(ref TarikhePayaneGozaresh, ref TarikheShorooeGhozaresh);
我已经检查过很多次了,现在我很困惑。正如您所
我正在创建一个名为swapElements()的方法。它接受一个整数数组和两个整数索引。该方法应将数组元素的值与指定的索引交换。
public class{
int swapElements(int[] number, int value1, int value2){
int temp = number[value1];
number[value1] = number[value2];
number[value2] = temp;
}
}
假设您有2个Integer变量a和b,那么仅当a>b使用匹配表达式时,如何交换它们?如果<= b不交换ints。
在祈使语中:
if (a > b){
int temp=a;
a=b;
b=temp;
}
在ocaml做同样的事情似乎很难。
我试过了
let swap a b =
match a,b with
| a,b when a > b -> b,a
| a,b when a <= b -> a,b
我试图这样做,因为在下面的函数调用中,我想确保x是这两个变量中较大的。
我正在创建一个排序选择,将最大值放在右边。我认为我已经完成了大部分工作,当我执行代码时,它可以工作,但是它不会按照从最小到最大的顺序排序前两个数字。当我编译时,我得到2,1,4,7,9,12,99
int n = 7;
int list[] = { 9, 2, 99, 4, 1, 12, 7};
int maxIndex = n - 1;
for (int i = 0; i < maxIndex-1; i++)
{
int maxNum = i;
for (int j = i+1; j < n; j++)
在我继续之前,我想告诉你,我是c语言的初学者(6个月),当我必须在我的程序中使用指针时,我对它们不是百分之百肯定,所以请对我温柔一点。
今天,我在编写代码时,突然意识到我需要使用交换。
选项1: --这是我使用的:
#include <stdio.h>
void swap(int *pa, int *pb){
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
int main(void){
int a = 5;
int b = 10;
printf("Before S
如果标题还不够让人迷惑,也许这个标题会让人迷惑。我有一个链表,其中包含有名字和姓氏的人以及其他一些变量。该列表必须先按姓氏排序,然后按名字排序。到目前为止,我按照姓氏的字母顺序将人员插入到列表中。然后我尝试遍历列表,如果两个姓氏相同,我检查名字并交换。但我有个虫子。
Inserted alphabetically into the list by last name, last,first
Acy,Mary
Acy,Clayton
Bob,Lonnie
Toni,Lonnie
After my so call "sort" of first names
Acy,Mary
Bo
我在一些地方看到了类矩阵的赋值运算符的实现如下所示:
class Matrix
{
private:
int rows;
int cols;
int **mat;
public:
Matrix& operator=(const Matrix& m)
{
if ( this != &m )
{
Matrix temp(m);
std::swap(temp.rows, rows);
这段Python代码也可以用Java代码编写吗?
def gcd(a, b):
# Return greatest common divisor using Euclid's Algorithm.
while b:
a, b = b, a % b
return a
print (gcd(210, 45))
这是我到目前为止在Java代码中所做的:
private static int gcd(int p, int q) {
// Return greatest common divisor using Euclid's Algo
我有一个函数,它接受指向数组的指针(所以是int**)。在这个函数中,我想调用swap(int*, int*)来交换数组中两个元素的位置。C中交换这两个元素的语法是什么?
下面是我正在寻找的一个例子:
int* do_something(int** arr) {
// assume i and j are valid locations in the array
swap(&arr[i], &arr[j]); // what should this line be?
}
// this function works fine, no changes neede
我在理解指针概念时遇到了问题,下面是代码。为什么交换(&a1,&a2)输出的是-5,6而不是6,-5?值已经被交换了,对吗?
void swap(int *ptr1, int *ptr2){
int temp;
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
int main (int argc, char *argv[]){
void swap(int *ptr1, int *ptr2);
int a1 = -5;
int a2 = 6;
int
我正在尝试理解所有交换算法中最简单的泡泡排序算法。然而,我似乎对实际交换值的步骤感到困惑,例如,考虑以下代码:
void bubbleSort(int arr[], int n) {
bool swapped = true;
int j = 0;
int tmp;
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < n - j; i++) {
if (
我不知道我做错了什么,但两个版本的代码应该给出相同的结果是不同的结果。如果有人能解释这是怎么回事,我会非常感激的。
情况如下。我使用数组作为‘向量’,我有一个带有两个重载的简单函数sub来计算两个向量之间的差异。第一个基本计算v := v - w,第二个计算x := v - w。
// Subtract w[] from v[]
template <class T>
void sub(T *v, T *w, short m)
{
for (short r = 0; r < m; r++)
v[r] = v[r] - w[r];
}
// Subtra
def password(passlist):
listt = []
for i in range(0, len(passlist)):
temp = passlist[i]
for j in range(0, len(temp)/2):
if((j+2)%2 == 0) :
t = temp[j]
temp.replace(temp[j], temp[j+2])
temp.replace(temp[j+2], t)
listt
我有两个引用,引用一个点到对象a,引用b点到对象b,然后我调用一个交换函数尝试让一个点到对象b,b点到对象a,它在交换函数中被交换,但是主函数没有改变。那我该怎么办?
交换函数:
private void swap(Stack<TreeNode> a, Stack<TreeNode> b) {
Stack<TreeNode> temp = new Stack<TreeNode>();
temp = a;
a = b;
b = temp;
}