|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
插入排序
: v. Q" u4 B$ s: l5 f* j! }8 b
; p8 X P7 k0 a0 {+ Z3 |序:" @6 W; b5 i6 t6 k
遇到难题,陆陆续续耗费一年精力,将成功之际,突然发现建模和求解思路不够灵活,用错了算法,而换了思路和算法,几天就做好了。本次事件令我深受打击,究其原因:* ?3 B: l" Y8 ~, M1 A: ?6 p$ E# ?
1.自己算法根基不牢,各种算法知识零碎,虽有对自己所接触到的算法有自己的理解,但从根本上未形成一套算法体系;
7 W" _/ `" S w, F2 O/ P2.书本上的建模是作者的成果展示,读者不能体会到中间过程的艰难;实际问题往往非常复杂,建立数学模型很困难,自己基本上无实战经验; I' y# C/ X. ?5 l7 K7 H+ {1 H
基于此次事件,为提高自己的算法水平和建模能力,今后的一年里,将根据《算法导论(第三版)》里所讨论的算法,挨着用matlab刷一遍,加固自己的算法底子;并结合自己生活中遇到的问题,尝试用建模来解决问题。
$ Q, F" ], V2 M, ^/ S. P0 a* D0 g! b
(一)插入排序6 a1 x" x7 |0 A, d9 A9 z2 l
- %插入排序 从小到大排列
- A=[5 2 4 6 1 3]%源数据
- for j=2:length(A)%从2号位开始进行插入
- key=A(j);%当前插入数字
- i=j-1;%插入数字的地址的前一位,从后往前插入
- while i>0 & A(i)>key% i>0已为当前排序数组最小值; A(i)>key 判断当前插入数字key和正在轮着比较数字的值大小
- A(i+1)=A(i);%插入数字比判断的小,则判断位数字后移
- i=i-1;%地址往前移动
- end
- A(i+1)=key;%在判断的当前位置插入当前判断数字(因为多减了一个地址,所以+1)
- end
- A %输出结果7 v0 z) ^6 o" V6 q [% R3 R$ \8 S
7 r8 g8 W0 w, @2 Y; \- t& a
$ B: ?9 Q6 u, R$ q: T4 `6 _! L. J |
|