问题1:异或交换两个数假设x=2;y=3,我们的目标是(没有蛀牙!!)交换x,y的值;利用异或的特殊性:x^x=0即两个相同数字异或后值为0;解决:令x=x^y=2^3令y=x^y=x^y^y=2^3^3=2(此时x=x^y)令x=x^y=x^y^2=2^3^2=3(此时x=x^y;y=2)问题2:...
分类:
其他好文 时间:
2014-08-18 21:55:02
阅读次数:
214
UVA 1016 - Silly Sort
题目链接
题意:给定一个序列,数字都不同,每次可以交换两个数字,交换的代价为两数之和,要求出把这个序列变成递增最小代价
思路:利用置换的分解原理,可以把序列的每条循环单独考虑,对于每条循环而言,不断交换肯定每个数字至少会换到一次,再利用贪心的思想,如果每次拿循环中的最小值去置换,那么就是这个最小值会用长度-1次,而剩下的数字各一次,注意...
分类:
其他好文 时间:
2014-08-08 21:32:26
阅读次数:
374
1、交换两个数 方法1、a+b有可能越界 a=a+b; b=a-b; a=a-b; 方法二、不会越界 a=a^b b=a^b; a=a^b; 2、extern “C”用法 ( 自己总结: 1、C++语言引用C语言函数时(void fun(int a,int b),void fun(int a,flo...
分类:
其他好文 时间:
2014-08-07 00:44:17
阅读次数:
258
1.冒泡排序void bubble_sort(int arr[], int num){ for(int i=0;iarr[j+1]){ //如果前面的数大于后面的数 int t=arr[j]; //交换两个数的位置,使小数下沉 ...
分类:
其他好文 时间:
2014-07-31 23:25:50
阅读次数:
299
代码: 1 #include 2 3 void swap(int x,int y) 4 { 5 int temp; 6 7 temp = x; 8 x = y; 9 y = temp;10 printf("In swap: x = %d,y = ...
分类:
编程语言 时间:
2014-07-20 22:14:56
阅读次数:
255
1.如何实现交换两个数的值void swap( int *a,int *b){int tep=*a;//*a其实就是主函数a的值,a是主函数存a数值的地址。*a =*b;*b =tep;}2.如何实现二维数组函数排序void desc( int(* a) [10] ,int i){//这样子就可以再...
分类:
其他好文 时间:
2014-07-16 19:27:27
阅读次数:
166
转载自:http://blog.csdn.net/sailor_8318/article/details/30543831~n无序数组时间复杂度为O(n)排序有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.(华为)...
分类:
编程语言 时间:
2014-06-26 18:20:53
阅读次数:
143
排序从大体上来讲,做了两件事情:
1、比较两个数据项;
2、交换两个数据项,或复制其中一项
一、冒泡排序
大O表示法:交换次数和比较次数都为O(N*N)。
算法原理:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。...
分类:
编程语言 时间:
2014-06-10 15:23:19
阅读次数:
234
#include
using namespace std;
//定义一个函数,用于交换两个变量的值
void swap(int &a, int &b);
void main()
{
int i = 3, j = 5;
cout<<"交换前:i="<<i<<" j="<<j<<endl;
swap(i,j);
cout<<"交换后:i="<<i<<" j="<<j<<endl;...
分类:
其他好文 时间:
2014-05-18 16:05:54
阅读次数:
209
1. 交换两个数值
x, y = y, x; //等价于 x = y, y =x;
2. 变量初始化问题
a, b, c = 0;
print(a,b,c); --> 0 nil nil
仅对第一个值复制,所以要初始化一组变量,应该提供多个初始值
a, b, c = 0, 0, 0;
print(a, b, c); --> 0 0 0
3. "尽可能...
分类:
其他好文 时间:
2014-05-10 10:17:39
阅读次数:
272