首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据每个元素的长度对数组进行排序?

如何根据每个元素的长度对数组进行排序?
EN

Stack Overflow用户
提问于 2012-05-17 14:17:09
回答 9查看 118.3K关注 0票数 114

我有一个这样的数组:

arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"

排序后,输出数组应为:

arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"  

我希望每个元素的长度按descending顺序排列。

EN

回答 9

Stack Overflow用户

发布于 2012-05-17 14:29:02

按照您的要求,根据javascript中字符串的长度,排序如下:

用冒泡排序法解决问题

1:http://jsfiddle.net/sssonline2/vcme3/2/enter code here

票数 3
EN

Stack Overflow用户

发布于 2020-04-24 01:07:56

#created a sorting function to sort by length of elements of list
def sort_len(a):
    num = len(a)
    d = {}
    i = 0
    while i<num:
        d[i] = len(a[i])
        i += 1
    b = list(d.values())
    b.sort()
    c = []
    for i in b:
        for j in range(num):
            if j in list(d.keys()):
                if d[j] == i:
                    c.append(a[j])
                    d.pop(j)
    return c
票数 1
EN

Stack Overflow用户

发布于 2020-10-06 13:07:36

如果希望保留与原始数组长度相同的元素顺序,请使用冒泡排序。

Input = ["ab","cdc","abcd","de"];

Output  = ["ab","cd","cdc","abcd"]

功能:

function bubbleSort(strArray){
  const arrayLength = Object.keys(strArray).length;
    var swapp;
    var newLen = arrayLength-1;
    var sortedStrArrByLenght=strArray;
    do {
        swapp = false;
        for (var i=0; i < newLen; i++)
        {
            if (sortedStrArrByLenght[i].length > sortedStrArrByLenght[i+1].length)
            {
               var temp = sortedStrArrByLenght[i];
               sortedStrArrByLenght[i] = sortedStrArrByLenght[i+1];
               sortedStrArrByLenght[i+1] = temp;
               swapp = true;
            }
        }
        newLen--;
    } while (swap);
  return sortedStrArrByLenght;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10630766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档