一个ACM若菜,趁着ACM淡季,开始学习算法导论了,经过一年的ACM学习,逐渐的发现,学东西,深入才是王道,以前学习一个算法,总是看懂了就开始做题,到后来才发现很多题目,会算法,却不知道是用这个算法,这就是算法理解的不到位的后果,从今天开始,定下目标:
1.深入系统的学习算法,
2.学会纸上写伪代码,每章的代码自己先在纸上写一遍,
3.每节的学习笔记和算法都要写在博客上。
在博客上记录自己的学习笔记,方便以后温习. 欢迎各路大神路过指正错误之处。
现在,先写写书上的第一个算法,插入排序。
算法思想:对于一个数组A[n],对
//insertion_sort #include <iostream> using namespace std; void insertion_sort(int* A, int n) { for (int j = 1; j < n; j++) { int key = A[j]; int i = j-1; //Insert A[j] into the sorted sequence A[0..j-1]. while (i >= 0 && A[i] > key) { A[i+1] = A[i]; i--; } A[i+1] = key; } } void print(int* A, int n) { for (int i = 0; i < n; i++) { cout << A[i] << " "; } cout << endl; } int main() { int A[10] = {43,2,53,1,8,29,52,4,8,10}; cout << "before sorted: "; print(A, 10); insertion_sort(A, 10); cout << "after sorted: "; print(A, 10); return 0; }
原文地址:http://blog.csdn.net/myhelperisme/article/details/42032837