第二讲平差程序设计基础资料精要.ppt

实例1——顺序搜索 实例2——求和函数 实例1——多项式求值 3.4 程序性能优化基本原则 不要一味的追求程序的效率,应当在满足正确性、可靠 性、健壮性、可读性等质量因素的前提下,设法提高程序的效率; 2. 以提高程序的全局效率为主,提高局部效率为辅; 3. 在优化程序的效率时,应当找出限制效率的“瓶颈”,不要在无关紧要之处优化; 4. 先优化数据结构和算法,再优化执行代码; 5. 有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷,例如多花费一些内存来提高时间效率; 6. 不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。 四、常用辅助功能函数设计 1. 排序算法 2. 最大、最小值查找算法 3. 中位数查找算法 4.1 排序算法 1. 问题描述 输入:n个数的序列a1,a2,…,an 输出:输入序列的一个重排a1,a2,…,an, 满足a1≤a2≤…≤an。 输入序列通常是一个n维数组,但也可能由其它形式来表示,如链表。 在实际中,待排序的数很少是孤立的值,它们通常是一个称为记录的数据集的一部分。每一个记录有一个关键字key,它是待排序的值。如果记录都很大,通常可以交换一组指向每个记录的指针而不是记录本身,以求将数据移动量减少到最小。 4.1 排序算法 2. 插入排序 3 1 6 4 2 5 6 5 4 3 2 1 3 1 6 4 2 5 6 5 4 3 2 1 3 1 6 4 5 2 6 5 4 3 2 1 3 1 6 5 4 2 6 5 4 3 2 1 3 1 6 5 4 2 6 5 4 3 2 1 3 6 5 4 2 1 6 5 4 3 2 1 6 5 4 3 2 1 6 5 4 3 2 1 f (n)= Ω (n)= O (n2) 4.1 排序算法 2. 插入排序 输 入:数组A[1:n],包含了n个待排序的数。 输 出:经从小到大排序后的数组A[1:n]。 过程名:InsertSort(A) begin for j=2:n begin key ← A[j]; //将A[j]插入到已排好序的A[1:j-1]中 i ← j-1; while i0 and A[i]key begin A[i+1] ← A[i]; i ← i-1; end A[i+1] ← key; end end 4.1 排序算法 2. 计数排序 假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。 1 0 3 2 0 2 C 5 4 3 2 1 0 3 0 3 2 0 3 5 2 A 8 7 6 5 4 3 2 1 8 7 7 4 2 2 C 5 4 3 2 1 0 8 7 6 4 2 2 C 5 4 3 2 1 0 3 B 8 7 6 5 4 3 2 1 8 7 6 4 2 1 C 5 4 3 2 1 0 3 0 B 8 7 6 5 4 3 2 1 8 7 5 4 2 1 C 5 4 3 2 1 0 3 3 0 B 8 7 6 5 4 3 2 1 7 6 4 2 2 0 C 5 4 3 2 1 0 5 3 3 3 2 2 0 0 B 8 7 6 5 4 3 2 1 输 入:数组A[1:n],包含了n个待排序的数;B[1:n]存放排 序结果;输入元素范围上界k。 输 出:经从小到大排序后的数组B[1:n]。 过程名:CountingSort(A,B,k) begin for i=0:k C[i] ← 0; for j=1:n C[A[j]] ← C[A[j]]+1;//C[i]包含等于i的元素个数 for i=1:k

文档评论(0)

1亿VIP精品文档

相关文档