美文网首页
将列表按照元素与设定值的距离从小到大排列

将列表按照元素与设定值的距离从小到大排列

作者: 吃鱼喵了个鱼 | 来源:发表于2020-03-26 12:28 被阅读0次

    这里自定义列表:[9,2,3,4,5,6,7,8,1]
    设定值:5
    代码如下:

    #将列表[9,2,3,4,5,6,7,8,1]按照元素与5的距离从小到大排序
    #求列表中元素与5的差的绝对值,表示距离
    #如果距离相等,则按照元素大小从小到大排序
    
    #定义一个全局变量
    Standard = 5
    
    #先求出列表元素的差值并放入原数组中
    def new_arr(arr):
        #newarr = []   #新建列表
        for i in range(len(arr)):
            arr[i] = arr[i]-Standard   #将差值放入初始列表[-4,-3,-2,-1,0,1,2,3,4]
        return arr
    
    #对差值进行选择排序,从而对相应的元素进行排序
    #选择排序首先先找出列表中的最小值
    def findSmallest(arr):
        small = arr[0]    #先设定初始最小值为arr[0]
        small_index = 0     #设定初始最小值对应的索引为0
        for i in range(1,len(arr)):
            #if判定如果列表中有距离相同的元素,则将元素按照从小到大排序
            if (abs(arr[i]) < abs(small)) or (abs(arr[i]) == abs(small) and arr[i] < 0):
                    small = arr[i]
                    small_index = i
        return small_index
    
    #然后根据最小值函数对列表进行选择排序
    def SelectionSort(arr):
        arr = new_arr(arr)
        new = []
        for i in range(len(arr)):
            small = findSmallest(arr)
            new.append(arr.pop(small)+Standard)
        return new
    
    list1 = [9,2,3,6,5,4,7,8,1]
    print(SelectionSort(list1))
    

    输出结果为:

    [5, 4, 6, 3, 7, 2, 8, 1, 9]
    

    欢迎有更好的算法建议,谢谢!

    相关文章

      网友评论

          本文标题:将列表按照元素与设定值的距离从小到大排列

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