假设我有两个变量。
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),哪个是最快的,或者还有其他更快的?
在这个程序中,我试图通过从列表中随机选择两个项目并交换它们,然后重复这个过程几次来混洗列表。
我遇到的问题是,我不知道如何交换项目和打印打乱列表。
例如,如果我的两个随机值是a和b,如果我只是放:
a = b
b = a
然后将a的值更改为b,但当它尝试将b更改为a时,不会发生任何更改,因为a已经更改为b。
我认为唯一可行的方法是同时交换它们,但我不知道有什么函数/方法可以交换它们。
同样,如果a,b是列表L中的项,在我交换它们之后,如果我使用
print L
它应该打印修改后的版本吗?我之所以这样问,只是因为从我尝试过的情况来看,它不是这样做的。
注意:我正在尝试通过交换来逐步混洗这个列表,
我有一个函数,它接受指向数组的指针(所以是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
对于c语言编程和编写一个交换两个numbers.the函数的函数,iam的新问题是,交换函数变量内部的更新是正确的,但是全局变量a和b不是changing.Please,帮助我理解I have.Thanks的任何错误概念。
int main(){
int a = 2; int b = 3;
void swap(int a , int b){
int c= a;
a = b;
b = c;
}
swap(a,b);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
我想写一个函数来交换两个整数。尽管一切看起来都很好,但没有交换值。
这是我的代码:
#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
我试图通过用不同的语言实现不同的算法来练习编程。关于插入排序的c++实现,我有两个问题。首先,为什么c++中的大多数实现都包含一个length参数,而其他实现(例如java )只访问for循环中的数组长度?下一个问题是,为什么大多数实现都在while循环中交换变量,而不是在最后交换变量呢?我已经包含了两个实现,以便更容易地讨论。
Java实现:
void insertionSort(int[] arr) {
int i, j, newValue;
for (i = 1; i < arr.length; i++) {
newValue = a
假设我想交换C++中的两个数组指针,这两个指针是用new []和不同长度分配的。交换后使用delete []是否安全?如果它们的长度相同呢?
int *a;
int *b;
int *tmp;
a = new int[5];
b = new int[10];
tmp = a;
a = b;
b = tmp;
delete [] a;
delete [] b;
假设您有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++)
#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"<<
我一直在寻找一种在C语言中的两个矩阵之间交换名称的方法。我有两个平方大小x大小的矩阵。我对其中一个做了一些操作,我把结果放在另一个矩阵的一个单元中,然后我交换了他们的名字,然后重复。
下面我给出了我的代码
int main(void){
int const size = 1000;
int const steps = 10;
float A[size][size], B[size][size];
int i,j,k;
int t = 0;
double sum = 0;
double sum1 = 0;
int const ed = size - 1;
for(i = 0; i < si
我试图在VB2015中进行快速排序,但是当我运行它时,值并不能完全排序(但是它几乎是排序的)。我非常确定这个问题与这两个重复出现的代码行有关。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
numbers = TextBox1.Text.Split()
Dim tempstring As String
Form2.Show()
tempstring = ""
quicksort(numbers, numbers.Len