Arrays 对数组进行排序,使重复的值始终排在最后

Arrays 对数组进行排序,使重复的值始终排在最后,arrays,sorting,Arrays,Sorting,我想对数组进行排序 示例:1112343445 我需要分类如下:12345123143 这可能吗 Objective-C、Swift或Javascript算法概述 按常规方式对数组a进行排序 由于排序,重复值现在在a中相邻,这使得它们很容易被发现 创建新阵列 遍历已排序的数组,将新元素移动到新数组的开头,将已看到的元素移动到新数组的结尾 伪码算法 代码 函数sortWithDuplicateLast(数组a\u未排序) { 数组a=排序(a_未排序) 数组b=长度与a相同的新数组 int j=0

我想对数组进行排序

示例:1112343445

我需要分类如下:12345123143

这可能吗

Objective-C、Swift或Javascript算法概述
  • 按常规方式对数组
    a
    进行排序
  • 由于排序,重复值现在在
    a
    中相邻,这使得它们很容易被发现
  • 创建新阵列
  • 遍历已排序的数组,将新元素移动到新数组的开头,将已看到的元素移动到新数组的结尾
  • 伪码算法 代码

    函数sortWithDuplicateLast(数组a\u未排序)
    {
    数组a=排序(a_未排序)
    数组b=长度与a相同的新数组
    int j=0
    int k=长度(b)-1
    对于(int i=0;i
    索引说明

    
    a = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5]
                        ^ i
    
    b = [1, 2,  ,  ,  ,  ,  ,  ,  , 2, 1, 1]
               ^ j               ^ k
    
    结果

    a_unsorted             = [4, 2, 5, 1, 1, 4, 3, 1, 3, 2, 3, 3]
    a                      = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5]
    b before optional pass = [1, 2, 3, 4, 5, 4, 3, 3, 3, 2, 1, 1]
    b                      = [1, 2, 3, 4, 5, 1, 1, 2, 3, 3, 3, 4]