0

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

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;
            }
        }
    }
}
4

2 回答 2

0

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

于 2013-06-14T04:13:39.497 回答
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. 
于 2018-02-07T10:09:40.143 回答