算法导论学习笔记 -(1)

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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。