基于比较的排序算法,应该是最符合人们直觉的方法。在各种算法的技术书上,已经证明了基于比较的排序算法的时间最优复杂度为O(nlogn)。下面是几种常见的基于比较的排序算法:1. 选择排序:这应该是最直观的排序方法。在排序n个元素时,第一次遍历,找到最小的元素,将其与第一个元素互换;第二次遍历,找到次小...
分类:
编程语言 时间:
2015-02-05 14:51:37
阅读次数:
173
1.Dijkstra算法(计算正权图上的单源最短路 single-sourceshortest paths (sssp) )从单个节点出发到所有节点的最短路。该算法适用于:有向图和无向图。1). O(n^2)的实现:邻接矩阵map存储实现,INF表示无穷大void Dijkstra(int s, i...
分类:
编程语言 时间:
2015-02-04 16:11:12
阅读次数:
253
数学建模中的十大常用算法
1. 蒙特卡洛方法:
又称计算机随机性模拟方法,也称统计实验方法。可以通过模拟来检验自己模型的正确性。
2. 数据拟合、参数估计、插值等数据处理
比赛中常遇到大量的数据需要处理,而处理的数据的关键就在于这些方法,通常使用matlab辅助,与图形结合时还可处理很多有关拟合的问题。
3. 规划类问题算法:
包括线性规划、整数规划、多元...
分类:
编程语言 时间:
2015-02-03 17:16:09
阅读次数:
281
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2015-01-31 19:21:49
阅读次数:
282
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2015-01-28 12:30:14
阅读次数:
191
1、插入排序思想:将无需组中的第一个数插入到有序数组中,这样经过N-1次插入即可完成排序。C++实现#include using namespace std;void Insert_Sort(int a[],int n);int main(void){ int a[] = {1,3,5,5,3...
分类:
编程语言 时间:
2015-01-20 17:07:13
阅读次数:
182
1.二分查找
代码:
int binarySearch(int arr[],int l,int r,int x)
{
while(l
{
int m = l + (r-1)/2;//为了防止(l+r溢出)
if(arr[m] == x)
return m;
if(arr[m]...
分类:
编程语言 时间:
2015-01-19 10:59:21
阅读次数:
275
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2015-01-18 18:24:42
阅读次数:
232
1. 排除数组中特定的字符,求剩下的字符的个数lens,同时保证原来数组前lens个元素中不包含被删除的字符(不要求顺序)。例如数组 [1, 3, 2, 3, 5]删除元素 3应该返回剩下的元素个数为3,并且保证数组前3个不包括元素3思路两个指针beg------指向当前访问的元素;end-----...
分类:
编程语言 时间:
2015-01-17 15:12:27
阅读次数:
186
关于排序算法的性能和稳定性总结,维基百科中文词条排序算法的总结很全面。本文统一将数组从小到大排序。1.插入排序(1)直接插入排序,基本操作是将一个记录插入到已经排好序的的有序表中,从而得到一个新的,记录数曾1的有序表。void InsertSort(int a [], int size){ int....
分类:
编程语言 时间:
2015-01-14 19:38:01
阅读次数:
173