一个菜鸟的算法导论学习笔记【Chapter 2】

来源:互联网 发布:打印机监控软件 编辑:程序博客网 时间:2024/06/06 08:26

Chapter 2 Getting Started

2.1 Insertion sort

#include<stdio.h>#include<iostream>using namespace std;int a[10]={123,134,3452,234,65,434,234,978,11234,345};int main()//由小到大排序 {for(int i=0;i<10;i++){int j=i;int key=a[i];for(;j>0&&a[j-1]>=key;j--)a[j]=a[j-1];a[j]=key;}for(int i=0;i<10;i++)cout<<a[i]<<"\t";return 0; } 

2.2 Analyzing algorithms

usually use worst-case analysis

oder of growth :

eg:
n^3/1000 -100n^2-100n, the order of order of growth is theta(n^3)

2.3 Designing algorithms

divide and conquer

Divide>>>Conquer>>>Combine

eg:
Merge sort

int a[100], b[100];void Merge(int*a,int p,int q,int r){int p1=p,p2=q+1,p3=0;while(p1<=q&&p2<=r)b[p3++]=a[p1]<a[p2]?a[p1++]:a[p2++];while(p1<=q)b[p3++]=a[p1++];while(p2<=r)b[p3++]=a[p2++];for(int i=p;i<=r;i++)a[i]=b[i-p];return;}void MergeSort(int *a,int p,int r)//对数组a,从第p位到第r位由小到大排序{if(p>=r)return;int q=(p+r)/2;MergeSort(a,p,q);MergeSort(a,q+1,r);Merge(a,p,q,r);//Combinereturn; } 

theta(nln(n))



0 0
原创粉丝点击