zoukankan      html  css  js  c++  java
  • 用7次比较完成5个元素的排序

    7次比较完成5个元素的排序:

             有五个数字,[a, b, c, d, e],进行排序。以下排序均按从小到大进行排序:

    1)       将a与b进行排序,排序结果为[a’, b’],共用1次比较,累计1次比较;

    2)       将c与d进行排序,排序结果为[c’, d’],共用1次比较,累计2次比较;

    3)       将a’与c’进行比较,若a’ < c’,则a’ < c’ < d’,同时a’ < b’;否则 c’ < a’ < b’,同时c’ < d’。共用1次比较,累计3次比较。将未排入序列的数字记为x;

    4)       将e向已排序的三个元素中进行插入,最大需2次比较,累计5次比较;

    5)       将x将向序列中进行排序。由于已知x比序列序列中一个元素要大,所以x一定比当前序列中最左值要大,所以最多还要和三个元素进行比较,需要2次比较,累计7次比较。

    程序代码如下所示:

    #! /usr/bin/python
    
    import random
    
    nums = random.sample(range(1, 100), 5)
    
    print "Generate ", nums
    
    # step 1
    if nums[0] > nums[1]:
        tmp = nums[1]
        nums.remove(tmp)
        nums.insert(0, tmp)
    
    # step 2
    if nums[2] > nums[3]:
        tmp = nums[3]
        nums.remove(tmp)
        nums.insert(2, tmp)
    
    # step 3
    save_num = 0
    if nums[0] < nums[2]:
        save_num = nums[1]
    else:
        save_num = nums[3]
        tmp = nums[2]
        nums.remove(tmp)
        nums.insert(0,tmp) 
    
    nums.remove(save_num)
    
    # step 4
    tmp = nums[3]
    nums.remove(tmp)
    if tmp < nums[1]:
        if tmp < nums[0]:
            nums.insert(0, tmp)
        else:
            nums.insert(1, tmp)
    else:
        if tmp < nums[2]:
            nums.insert(2, tmp)
        else:
            nums.insert(3, tmp)
    
    # step 5
    if save_num < nums[2]:
        if save_num < nums[1]:
            nums.insert(1, save_num)
        else:
            nums.insert(2, save_num)
    else:
        if save_num < nums[3]:
            nums.insert(3, save_num)
        else:
            nums.insert(4, save_num)
    
    # Last list
    print "Final ", nums
  • 相关阅读:
    Android Binder机制中的异步回调
    VS加载项目时报错 尚未配置为Web项目XXXX指定的本地IIS
    下班前码个2013总结吧
    android ListView 在初始化时多次调用getView()原因分析
    Android BindService中遇到的一个小问题
    C#读书笔记之并行任务
    Android系统启动分析(Init->Zygote->SystemServer->Home activity)
    浅析Java异常
    在Ubuntu-14.04.3配置并成功编译Android6_r1源码
    (转)Android Binder设计与实现 – 设计篇
  • 原文地址:https://www.cnblogs.com/elta/p/5423754.html
Copyright © 2011-2022 走看看