一个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