美文网首页
算法导论 第一章 插入与归并排序

算法导论 第一章 插入与归并排序

作者: 梦里落花Daniel | 来源:发表于2016-05-30 19:30 被阅读52次

算法排序:input:sequence 《a1,a2,a3…..an》output: permutation 《a11,a22,a33,..ann》$ a110

 insertion sort


Insertioon-Sort(A,n) //Sorts A[1..n]    peusocode

for j<—2 to n

   do    key <—A[j]

           i<—j-1

            while i> 0 and A[i] > key

                 do A[i+1] <—A[i]

                 i<—i-1

   A[i+1]<—key


EX:[8,2,4,9,3,6]

start j = 2;

…..

[2,3,4,6,8,9]

Running time

—depends on input (e.g. already sorted)

—depends on input size (6 elem vs 6*10^9)

—parameter in input size

—Want upper bounds

Kinds of analysis

Worst -case(usually)

T(n) = max time on any input of size n

Average-case(sometimes)

T(n)=expected time overall input of size n

(Need assumption of stat distribution——equal )

Best-case(bogus)

Worst -case

—relative speed

—absolute speed

Big Idea  Asymptotic analysis

1.Ignore machine dependent

2.Look at growth of T(n) as n->oo

Asymptotic notation

Big O (theta notation) Drop low order terms Ignore leading constants

EX:3n^3 + 90 n^2-5n + 6046=Theta(n^3)

Insertion sort analysis

Worst -case: input reverse sorted

T(n)=qiuhe (j <—2–n)O(j) = O(n^2)

Is Insertion fast?  Not for large n

Merge sort

Merge sort A[1..n]    T(n)

1.if n = 1 ,done    //Theta(1)

2.Recursive sort  //2T(n/2)

A[1..n/2] and A[n/2+1…n]

3.Merge 2 sorted list  //Theta(n)

Key subroutine  Merge

Time = Theta(n) Linear time

Recurrence

T(n) ={ theta(1) if n=1;  2T(n/2)+O(n) if n >1}

Recursion Tree T(n) = 2T(n/2)+c*n (c>0)

T(n) = cn  =                  cn =……  =        cn    cn

/    \                  /      \                      ….    cn

T(n/2) T(n/2)    cn/2    cn/2            O(1)    O(n)

/    \        /    \

T(n/4) T(n/4) T(n/4) T(n/4)

Height of the tree is lg(n)  leaves = n

Total = cn * lg(n) + O(n)= O(n*lg(n))

bounds is 30

相关文章

  • 常见排序算法

    1 前言 2 排序基础2.1 选择排序2.2 插入排序 3 高级排序算法3.1 归并排序3.1.1 插入排序与归并...

  • 计数排序、基数排序和桶排序

    阅读经典——《算法导论》07 到目前为止,我们已经介绍了插入排序、归并排序、堆排序、快速排序这四种排序算法,他们的...

  • 堆排序

    阅读经典——《算法导论》05 本文介绍一种神奇的排序方法:堆排序。 堆排序不像插入排序和归并排序那样直观,它利用了...

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 排序算法

    常见的排序算法 常见的排序算法有:插入、希尔、选择、冒泡、归并、快速、堆排序。。。 插入排序 算法步骤一、从数组的...

  • 排序题

    公共函数 选择排序 冒泡排序 插入排序 快速排序 归并排序——迭代算法

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 排序学习 - 为了面对算法面试(2)

    排序学习 - 为了面对算法面试(1) - 选择排序/冒泡排序/插入排序 4.归并排序:归并排序(MERGE-SOR...

  • 前端基础整理 | 算法基础

    排序算法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

网友评论

      本文标题:算法导论 第一章 插入与归并排序

      本文链接:https://www.haomeiwen.com/subject/lnkcdttx.html