开发工具:codeblocks 17.12版本

学习视频来自b站

第一天:学习swap交换、冒泡排序

swap交换:swap是几乎所有的排序的最基础部分,代码如下:

#include <iostream>

using namespace std;

int main()
{
int a,b,tmp;
a=1;
b=10;
cout <<"a="<< a<<",b="<<b<< endl;
tmp=a;
a=b;
b=tmp;
cout <<"a="<<a<<",b="<<b<< endl;
return 0;
}

为了将其做成函数进行调用,进行了一个失败的案例:

#include <iostream>
//失败的例子
using namespace std;
//定义交换函数
void swap(int x,int y);

int main()
{
int a,b;
a=1;
b=10;
cout <<"a="<< a<<",b="<<b<< endl;
//调用交换函数
//a和b是如何传递的
//c++按值传递:把a拷贝一个传递进去,b相同
swap(a,b);//传递参数的方式
cout <<"a="<< a<<",b="<<b<< endl;
return 0;

}
//失败案例
//交换函数内容
void swap(int x,int y){
int tmp;
tmp=x;
x=y;
y=tmp;
}

学习视频得到了理解,后面进行尝试了几个成功的案例:

#include <iostream>
using namespace std;
void swap(int *px,int *py);

int main(){

int a,b;
a=1;
b=10;
cout<<"传递指针的方法:"<<endl;
cout <<"a="<< a<<",b="<<b<< endl;
//拷贝指针(地址)
swap(&a,&b);

cout <<"a="<< a<<",b="<<b<< endl;
return 0;

}
void swap(int *px,int *py){

int tmp;

tmp=*px;
*px=*py;
*py=tmp;

}

#include <iostream>
//c语言中最常用的就是宏定义
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
using namespace std;
int main()
{
int a,b,tmp;
a=1;
b=10;
cout<<"使用宏定义函数:"<<endl;
cout <<"a="<< a<<",b="<<b<< endl;
SWAP(a,b,tmp);
cout <<"a="<< a<<",b="<<b<< endl;
return 0;
}

#include <iostream>

using namespace std;

void swap(int &x,int &y);

int main()
{
int a,b;
a=1;
b=10;
cout<<"传引用:"<<endl;
cout <<"a="<< a<<",b="<<b<< endl;

swap(a,b);
cout <<"a="<< a<<",b="<<b<< endl;
return 0;
}
//引用就是别名
void swap(int &x,int &y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}

#include <iostream>
//使用自带的模板进行交换
using namespace std;
int main()
{
int a,b;
a=1;
b=10;
cout <<"使用std::swap函数"<<endl;
cout <<"a="<< a<<",b="<<b<< endl;
std::swap(a,b);
cout <<"a="<< a<<",b="<<b<< endl;
return 0;
}

就这一个小小的swap就这么多的写法,当然最好用的还是调用C++自带的函数库啦。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

下面是一个冒泡排序,是在swap代码的基础上发展而来的,这应该是最简单的排序了吧,但同时也是效率最低的一个了吧:

#include <iostream>

using namespace std;
void bubblesort(int list[],int n);
int main()
{
int a[]={2,7,9,5,8,6,3,4,1,0};
bubblesort(a,10);

for(int k=0;k<10;k++)
{
cout<<a[k]<<" ";
}
cout<<endl;
return 0;
}
void bubblesort(int list[],int n)
{
//n=10
//0-9
//两个两个进行比较,每次扫描过程中,选择最大的,并且把它进行交换放到右边
//效率低
for(int i=0;i<=n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(list[j]>list[j+1])
std::swap(list[j],list[j+1]);
}
}
}

okay,这是昨天学习的总结啦

数据结构与算法的实现(c++)之第一天的更多相关文章

  1. C++基础代码--20余种数据结构和算法的实现

    C++基础代码--20余种数据结构和算法的实现 过年了,闲来无事,翻阅起以前写的代码,无意间找到了大学时写的一套C++工具集,主要是关于数据结构和算法.以及语言层面的工具类.过去好几年了,现在几乎已经 ...

  2. Python八大算法的实现,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。

    Python八大算法的实现,插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得 ...

  3. Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.由于数字图像的离散信号, ...

  4. java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现

    java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析 ...

  5. SSE图像算法优化系列十三:超高速BoxBlur算法的实现和优化(Opencv的速度的五倍)

    在SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现) 一文中,我曾经说过优化后的ExpBlur比BoxBlur还要快,那个时候我比较的BoxBlur ...

  6. 详解Linux内核红黑树算法的实现

    转自:https://blog.csdn.net/npy_lp/article/details/7420689 内核源码:linux-2.6.38.8.tar.bz2 关于二叉查找树的概念请参考博文& ...

  7. Python学习(三) 八大排序算法的实现(下)

    本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...

  8. 排序算法的实现之Javascript(常用)

    排序算法的实现之Javascript 话不多说,直接代码. 1.冒泡排序 1.依次比较相邻的两个数,如果前一个比后一个大,则交换两者的位置,否则位置不变 2.按照第一步的方法重复操作前length-1 ...

  9. RMQ问题总结,标准RMQ算法的实现

    RMQ问题:对于长度为N的序列,询问区间[L,R]中的最值 RMQ问题的几种解法: 普通遍历查询,O(1)-O(N) 线段树,O(N)-O(logN) DP,O(NlogN)-O(1) RMQ标准算法 ...

随机推荐

  1. Springboot Jackson配置根本方案, 日期格式化, 时区设置生效

    当项目集成配置的功能越来越多, 说不准哪个配置就影响到了什么. 比如你启用了EnableMvC, 默认配置文件配置的一些文件就失效了. 虽然约定大于配置,让springboot可以极简化构建, 但不熟 ...

  2. Django框架之数据库ORM框架

    首先,我来介绍一下什么是ORM框架: O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮 ...

  3. AcWing 220. 最大公约数 | 欧拉函数

    传送门 题目描述 给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对. GCD(x,y)即求x,y的最大公约数. 输入格式 输入一个整数N 输出格式 输出一个 ...

  4. OpenLayers4 隐藏(hide)Feature

    需求: 需要将同一图层的要素进行分类显示和隐藏(类似于图层控制) 方法: 使用setStyle方法将Feature的样式设置为null. 环境: win10.google chrome.OL 4.3 ...

  5. ArcEngine 创建线要素图层

    在创建要素图层的时候,默认的几何类型是Polygon: Dim objectClassDescription As IObjectClassDescription = New FeatureClass ...

  6. 开发一个简单的ip解析webservice接口,并用springmvc生成客户端调用

    1.创建webservice工程,这次先采用jax-ws框架,下次再尝试jax-rs(restful) 2.写个实现ip解析的类,接收传入的ip,并返回解析信息 3.Myeclipse——>Ne ...

  7. 重拾c++第一天(1):环境配置

    时过多年,c++基本不记得了,故在此记录相关重拾记录. 学习语言第一步当然是环境配置了(笑),由于暂无用c++进行大型项目开发的需求,所以先下载dev进行过渡. 安装过程非常简单,值得注意的是配置时选 ...

  8. react-mockjs

    2020-01-17 react-mockjs 使用 最近参加了公司的一个新的项目,前后端同时开发,这时后端提供不了前端接口,那么就要靠咱们前端自己mock数据啦. 用到mock 数据的工具是 moc ...

  9. 最近发现Git的速度好慢

    最近发现Git速度好慢,Git Bash要等5秒左右才能操作,网上查了查原因,说是火绒的问题,哎平时也用不到,看日志一个毒都没光顾过我电脑,火绒卸载! 卸了后果然快多了

  10. Python语言的configparser模块便捷的读取配置文件内容

    配置文件是在写脚本过程中经常会用到的,所以读取配置文件的模块configparser也非常重要,但是很简单. 首先我们的配置文件内容为: 这样的配置文件,[]里面的内容叫section,[]下面的内容 ...