- 博客(7)
- 收藏
- 关注
原创 排序算法—冒泡排序
冒泡排序的时间复杂度:平均情况下O(N^2),最好情况O(N),最坏情况O(N^2)空间复杂度:O(1)是一种稳定的算法void swap(int &a, int&b)//c++语法,引用{ int t = a; a = b; b = t;}void bubble(int a[], int n)//冒泡排序,一轮下来最大或者最小的往最后位置冒炮{ int flag = 1;
2017-09-30 16:25:38 215
原创 排序算法—选择排序
void selectsort(int a[], int len)//传入数组和数组长度{ for (int i = 0; i < len;i++) { int min = i;//假设当前的下标是最小的 for (int j = i; j < len;j++) if (a[min]>a[j])//遇到比该下标还小的则保存该下标 min = j; if (min !
2017-09-30 16:24:20 187
原创 排序算法—归并排序
归并排序的定义:归并排序算法采用的是分治算法,即把两个(或两个以上)有序表合并成一个新的有序表,即把待排序的序列分成若干个子序列,每个子序列都是有序的,然后把有序子序列合并成整体有序序列,这个过程也称为2-路归并.注意:归并排序的一种稳定排序,即相等元素的顺序不会改变.大致过程:归并排序的时间复杂度归并排序的最好、最坏和平均时间复杂度都是O(nlogn),而空间复杂度是O(n)附上代码:void ...
2017-09-30 15:58:29 247
原创 C/C++的函数调用约定
在函数调用时,计算机用栈来维持函数调用的上下文信息,我们称之为栈帧。Linux和windows下栈的大小都是预先确定的,大小为1M,这个大小是可以更改。调用函数前,首先把主调函数下一指令的地址入栈,然后函数的参数入栈。调用函数前有两个比较重要的问题要解决:1、参数入栈的顺序?2、谁来清理栈内存?函数调用约定则解决了这两个问题:_cdecl C调用方式,是C语言缺省
2017-09-27 21:40:35 355
原创 排序算法—堆排序
堆的定义:堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:即任何一非叶点的值不大于或者不小于其左右孩子节点的值。将一个数组看成是一个完全二叉树,利用完全二叉树左右孩子和其父亲节点在数组中的下标特点进行调整后符合堆的定义最后达到整个序列有序的算法:当数组从0下标开始时,一根节点的左右孩子存在时满足 : 左孩子下标=父节点*2+1; 右孩子下标=父节点*2+2;假设有数组int a[10] = {...
2017-09-23 18:50:26 245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人