首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c++中使用外壳排序对三维数组[5][5][5]进行排序?

如何在c++中使用外壳排序对三维数组[5][5][5]进行排序?
EN

Stack Overflow用户
提问于 2015-06-03 10:49:51
回答 1查看 82关注 0票数 0

大家好,我的程序有一个问题,我有一个三维数组,但是我可以用ordenacionShell排序。我可以显示这个数组,但是void shellsort.I不能对我的数组排序,有人能帮我吗?

代码语言:javascript
复制
#include <iostream>

using namespace std;
void intercambiar(int& x, int& y);

void intercambiar(int& x, int& y)
{
int aux = x;
x = y;
y = aux;
}
void ordenacionShell(int a[5][5][5], int n)

 {
int salto, i, j, k,j1,j2,k1,k2;
salto = n / 2;
while (salto > 0)
{
for (i = salto; i < n; i++)
{
    j = i - salto;
    j1= i - salto;
    j2= i - salto;
    while (j >= 0 )
    {
        k = j + salto;
            k1 = j + salto;
                k2 = j + salto;
        if (a[j][j1][j2] <= a[k][k1][k2])
        {j = -1; // par de elementos ordenado
            j1 = -1;
            j2 = -1;}
        else
        {
            cout<<"intercambio: "<<"";
            cout<<a[j][j1][j2]<<" ";
            cout<<a[k][k1][k2]<<"\n";
            intercambiar(a[j][j1][j2], a[k][k1][k2]);

            j -= salto;
            j1 -= salto;
            j2 -= salto;


        }
    }
  }
   salto = salto / 2;
   cout<<"Salto: "<<salto<<"\n";
  }
}


int main()
{
int a[5][5][5] = {
    { {1,2,9,4,5}, {6,7,17,9,10}, {11,12,16,14,15}, {16, 17, 22, 19, 20},   {21,22, 20, 24, 25} },

   {26,25,28,29,30}, {31,29,33,34,35 }, {36,30,38,39,40}, {41,42,49,44,45},      {46, 47, 34, 49, 50},  },

   { {51, 52, 49, 54, 55}, {56,57,58,50,60}, {61,62,63,66,65}, {66, 67, 68, 69, 71}, {71, 70, 73, 74, 75}, },

 { {76, 75, 78, 79, 80}, {81,82,73,84,85}, {86,77,88,89,90}, {91, 82, 93, 94, 95}, {96, 91, 98, 99, 100}, },

  { {101, 100, 103, 104, 105}, {106,105,108,109,110}, {121, 112, 113, 114, 115}, {116, 117, 118, 119, 121}, {121, 122, 123, 124, 123} }
};

for(int i=0;i<5;i++)
{
   for(int j=0;j<5;j++)
   {
         for(int l=0;l<5;l++)
   {
    cout<<a[i][j][l]<<",";

   }
  }}
   ordenacionShell( a,5);
        for(int i=0;i<5;i++)
     {
      for(int j=0;j<5;j++)
        {
         for(int l=0;l<5;l++)
       {
       cout<<a[i][j][l]<<",";

    }
 }}


  return 0;
}

简单数组正常工作的原始外壳排序函数如下所示:

代码语言:javascript
复制
void ordenacionShell(int a[], int n)
{
int salto, i, j, k;
salto = n / 2;
while (salto > 0)
{
for (i = salto; i < n; i++)
{
    j = i - salto;
    while (j >= 0)
    {
        k = j + salto;
        if (a[j] <= a[k])
            j = -1; // par de elementos ordenado
        else
        {
            cout<<"intercambio: "<<"";
            cout<<a[j]<<" ";
            cout<<a[k]<<"\n";
            intercambiar(a[j], a[k]);
            j -= salto;
        }
    }
}
salto = salto / 2;
cout<<"Salto: "<<salto<<"\n";
}
}
EN

回答 1

Stack Overflow用户

发布于 2015-06-03 11:02:01

您的数组初始化错误。到处都是逗号。

示例:

代码语言:javascript
复制
int a[5][5][5] = {
    { {1,2,9,4,5}, {6,7,17,9,10}, {11,12,16,14,15}, {16, 17, 22, 19, 20},   {21,22, 20, 24, 25} },

   {26,25,28,29,30}, {31,29,33,34,35 }, {36,30,38,39,40}, {41,42,49,44,45},      {46, 47, 34, 49, 50},  },
//                                                                                    check this out ^

解决这个问题能解决你的问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30610008

复制
相关文章

相似问题

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