Python插入排序的实现

讨论 stubbron
Lv3 见习炼丹师
发布在 综合   915   0
讨论 stubbron   915   0

    > 输入一个无序整型序列Array,返回一个有序序列(从小到大)。Insert_Sort伪代码如下:

    for j=2 To Array.length:
        key = Array[j]
        i = j -1
        // 开始寻找key的正确位置
        while i>0 and Array[i]>key:
            Array[i+1] = Array[i]
            i = i - 1
        Array[i+1] = key
    • 对于Array,我们将Array[1, 2, ..., j-1]视为已经排序好的序列、Array[j]视为正要寻找位置的元素、Array[j+1, j+2, ...., n]视为未排序的序列。

    • 对于Array[j]和Array[j-1]:  - Array[j] > Array[j-1] 说明位置已经正确  - Array[j] < Array[j-1] 位置进行交换。

    思考(练习1):
    • 1.1说明数组Array = [31, 51, 59, 26, 48, 51]在Insert_Sort的执行过程。
    • 1.2重写Insert_Sort代码,使之输出降序序列。
    • 1.3思考以下查找问题  - 输入:n个长度的Array,和一个整型v.  - 输出:当 v存在Array中,返回true,否则返回false,写出线性的伪代码。
    • 1.4给定长度为N的数组Array无序数组,找出Array的最小元素,与Array[0]进行位置交换找出Array的最小元素,与Array[0]进行位置交换。一直到对Array[n-1]项进行此操作。这样的算法称为选择排序(select sort)思考:

     - 写出选择排序的伪代码,或者实现代码。  - 为什么选择排序只需要对n-1项而不是n项进行这样的操作。  - 用大O记法表示该算法的最好与最坏情况的运行时间。

    • 1.5再次参考线性查找问题(参考练习1.3)。假定查找的元素等可能为数组中的任意元素,平均需要检查输入序列的多少元素?最好与最坏的情况呢?请用大O记法分别表示,平均,最好,最坏的运算时间。

    • 1.6在插入排序中,在Array[j],寻找位置的时候,如何快速找到正确位置?

    • 1.7如何修改任意一个算法,才能使之具有良好的最好情况允许时间?  

    版权声明:作者保留权利,不代表意本站立场。如需转载请联系本站以及作者。

    参与讨论

    回复《 Python插入排序的实现

    EditorJs 编辑器

    沙发,很寂寞~
    反馈
    to-top--btn