bubble在c ++中对3d数组进行排序

时间:2013-06-14 03:28:04

标签: c++ arrays bubble-sort multidimensional-array

我希望对外部数据文件使用冒泡排序,而看起来像这样。

00000002

45

56

32

46

00000001

87

95

83

100

所以00000001以下的所有数据都出现在00000002之前。我猜是为了这样做,我需要使用一个3d数组。有没有办法在变量下存储00000001下的所有数据,只需使用简单的冒泡排序方法对其进行排序。如果可以这样做,那么我可以使用这样的东西进行排序。

void displayArray(int sArray[2])
{
    int i = 0;
    while(i<2)
    {         
        cout << sArray[i];
        cout << "\n";
        i++;
    }    
}

void sortArray(int sArray[2])
{
    int temp = 0;
    bool sorted = false;

    while(sorted == false)
    {
        sorted = true;
        for(int i=0; i<1;i++)
        {
            if(sArray[i]>sArray[i+1])
            {
                temp = sArray[i];
                sArray[i] = sArray[i+1];
                sArray[i+1] = temp;
                sorted = false;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

无论您使用何种排序算法,都应该使用指向第一个和最后一个位置的指针。在这种情况下,您可以对项目1-4进行排序,然后对项目6-10运行排序。

答案 1 :(得分:0)

此功能用于按升序排列3D阵列的气泡。

如果您想安排descending order,那么只需更改>而不是<

如果要更改数组的大小,则可以更改循环大小。

#include <iostream>
using namespace std;

int sorting(int array[2][2][5]){
     int temp;
     for (int i = 0 ; i < 2 ; i++ )
         for (int j = 0 ; j < 2; j++ )
             for (int k = 0 ; k < 5 ; k++ )
                for (int a = 0 ; a < 2 ; a++ )
                    for (int b = 0 ; b < 2 ; b++ )
                        for (int c = 0 ; c < 5 ; c++ )
                            if (array[i][j][k] < array[a][b][c]){
                                temp = array[i][j][k];
                                array[i][j][k] = array[a][b][c];
                                array[a][b][c] = temp;}
   for (int i = 0 ; i < 2 ; i++ )
       for (int j = 0 ; j < 2 ; j++ )
           for (int k = 0 ; k < 5 ; k++ ){
               cout << array[i][j][k] << endl;
           }
    return 0;
}
int main(){
    int array1[2][2][5] = {{{45,23,67,1,-12},{34,43,234,567,576}},
    {{345,345,76,87,2},{456,789,890,32,4}}};
     sorting(array1);
}
////This is example of bubble sorting of 3D array.