c++实现简单算法【1】

发布于:2024-05-20 ⋅ 阅读:(159) ⋅ 点赞:(0)

1.交换两数

int a=2,b=3;
int temp=a;a=b;b=a;

 函数包装

指针

#include <stdio.h>
#include<string.h> 
//#include <iostream>
//using namespace std;
void swap(int* a,int* b)
{
	int temp=*a;
	*a=*b;//修改a指针指向的地址的对应的变量的值,地址不变 
	*b=temp;
}
int main()
{
	int a1=3,a2=4;
	int* p1=&a1;int* p2=&a2;
	swap(p1,p2);
	printf("%d %d",a1,a2);

}

 输出:4 3

指针的值=地址

取地址=&变量

取该地址上变量的值=*p=*&变量

必须是改变地址上的值,不是改变地址

如果是改变地址:

#include <stdio.h>
#include<string.h> 
//#include <iostream>
//using namespace std;
void swap(int* a,int* b)
{
	int *temp=a;
	a=b;
	b=temp;
}
int main()
{
	int a1=3,a2=4;
	int* p1=&a1;int* p2=&a2;
	swap(p1,p2);
	printf("%d %d",a1,a2);

}

输出仍为:3 4

 引用(更方便)

#include <stdio.h>
#include<string.h> 
//#include <iostream>
//using namespace std;
void swap(int& a,int& b)
{
	int temp=a;
	a=b;
	b=temp;
}
int main()
{
	int a1=3,a2=4;
//	int* p1=&a1;int* p2=&a2;
	swap(a1,a2);
	printf("%d %d",a1,a2);

}

输出:4 3 

指针的引用

给指针加上引用,交换两个指针

#include <stdio.h>
#include<string.h> 
#include<typeinfo>
//#include <iostream>
//using namespace std;
void swap(int* &p1,int* &p2)
{
	//对指针的swap 
	int* temp=p1;
	p1=p2;
	p2=temp;

}
int main()
{
	int a1=3,a2=4;
	int* p1=&a1;int* p2=&a2;
	swap(p1,p2);
	printf("%d %d ",a1,a2);
	printf("%d %d ",*p1,*p2);

}

输出: 

但是不能这样:

#include <stdio.h>
#include<string.h> 
#include<typeinfo>
//#include <iostream>
//using namespace std;
void swap(int* &p1,int* &p2)
{
	//对指针的swap 
	int* temp=p1;
	*p1=*p2;
	*p2=*temp;

}
int main()
{
	int a1=3,a2=4;
	int* p1=&a1;int* p2=&a2;
	swap(p1,p2);
	printf("%d %d ",a1,a2);
	printf("%d %d ",*p1,*p2);

}

这个输出:4 4 4 4 

因为temp和p1同为指针,指向同一地址,*p1赋值为*p2时,*temp对应地址的值也是*p2

 

2.冒泡排序

第一次冒泡,交换n-1次 

第二次冒泡,交换n-2次

……

第n-1次冒泡,交换1次

n-1+(n-2)+……+1=总次数


网站公告

今日签到

点亮在社区的每一天
去签到