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
  • 相关阅读:
    git常用指令 github版本回退 reset
    三门问题 概率论
    如何高效的学习高等数学
    数据库6 关系代数(relational algebra) 函数依赖(functional dependency)
    数据库5 索引 动态哈希(Dynamic Hashing)
    数据库4 3层结构(Three Level Architecture) DBA DML DDL DCL DQL
    梦想开始的地方
    java String字符串转对象实体类
    java 生成图片验证码
    java 对象之间相同属性进行赋值
  • 原文地址:https://www.cnblogs.com/elta/p/5423754.html
Copyright © 2011-2022 走看看