【问题标题】:Insert values from one array to another directly sorted将值从一个数组插入到另一个直接排序的数组
【发布时间】:2013-04-09 10:14:25
【问题描述】:

所以我要做的就是将某些值从一个数组插入到另一个直接排序的数组中,而无需稍后使用 BubbleSort 或 QuickSort 或任何其他方法对它们进行排序。我想不出一种方法来做到这一点......我必须将它们从最大值插入到最小值。这是我到目前为止所拥有的:

void palindroame (int x[100], int y[100]) {
    int i=0, j, k=0, aux;
    while (x[i]!=0) { 
        k++; i++; 
    }
    i=0;
    for (i=0; i<=k-1; i++) y[i]=0;
    for (i=0; i<=k-1; i++) { 
        if (palindrom(x[i])!=0 && palindrom(x[i+1])!=0) 
            if (x[i]<x[i+1]) { 
                aux=x[i+1]; x[i+1]=x[i]; x[i]=aux; 
            } 
    } //wrong
    for (i=0; i<=k-1; i++) { 
        if (palindrom(x[i])) y[i]=x[i]; 
    } //wrong
}

提前致谢!

【问题讨论】:

  • 两个数组(你使用的是数组而不是向量)开始排序了吗?
  • 嗯,第一个数组没有排序(x),第二个(y)用0填充
  • 从一个未排序的数组中复制值,以便它们在另一个数组中排序 is 排序。你的问题没有多大意义。这就像说我想要排序的值而不进行排序。您将不得不以一种或另一种方式进行排序。
  • 我知道,我尽力解释了,这实际上是我几天后参加的考试的练习......我要做的是从一个数组中获取某些值并从大到小将它们插入另一个中,而无需在插入后对其进行排序,希望您能理解我要解释的内容xD
  • @IcebirdRo 您需要的算法是选择排序。 en.wikipedia.org/wiki/Selection_sort,你可以用它同时排序和复制。

标签: c++ sorting vector


【解决方案1】:

你需要的算法是selection sort,你可以用这个算法同时排序和复制。

【讨论】:

  • @IcebirdRo 讨厌这么说,但我认为这个答案不正确。你实际上想要插入排序,en.wikipedia.org/wiki/Insertion_sort
  • 我刚试了一下,它成功了,但我必须对 x 进行排序......但它没有说我不允许对它进行排序,它只是说我不是允许对 y 进行排序。我也试试插入排序,谢谢!
  • @IcebirdRo 是的,这就是我看到的问题。无论如何,我看不到在不对原始数组进行排序的情况下使用选择排序。但是插入排序应该不同。
【解决方案2】:

【讨论】:

    【解决方案3】:

    这是我最近做的一个选择排序的例子(其中 a 是一个向量)

    应该给你足够的继续希望它有帮助,如果你喜欢问问题

    for (unsigned int i = 0; i < a.size()-1; i++)
    {
        int min = i;
    
        for(unsigned int j = i +1; j < a.size(); j++)
        {
            // If new minimum is found then stores this as the new minimum
            if(a[j] < a[min])
            {
                min = j;
            }
        }
        // Stores the values in the array in ascending order
        if (min != i)
        {
            int temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
    // Returns the array in ascending order
    return a;
    

    编辑:只是为了澄清这是在一个已经有值的向量上工作,以防不清楚,但我认为代码 cmets 的示例足以帮助你 IMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2019-04-14
      • 2011-07-06
      • 2015-09-19
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多