在C中以二进制数组移动列

时间:2016-04-01 17:06:51

标签: c arrays sorting alphabetical

您好我有一个以下列方式启动的二维数组:

SqlCommand myCommand = new SqlCommand("UPDATE myTable SET Date = getdate() WHERE UserId = extractedId", myConnection);

我需要移动列,按字母顺序排列第一行, 我的意思是,包含#include <stdio.h> #include <stdlib.h> int main(){ char matriz[6][5]={ {'F','H','V','D','U'}, {'E','L','Q','U','E'}, {'P','E','R','S','E'}, {'V','E','R','A','A'}, {'L','C','A','N','Z'}, {'A','Z','Z','Z','Z'}}; system("pause"); } 的行。

我需要以下输出:

{'F','H','V','D','U'}

我知道我需要使用选择性排序方法和一个循环的fors,但我不确定如何。

2 个答案:

答案 0 :(得分:2)

声明一个结构:

typedef struct{
  colChar:char;
  colIndex:int;
} COL_HEADER;

创建一个数组,长度与行长度相同:

COL_HEADER myColHeaders [5];

在循环中加载每个,colChar作为列标题char,colIndex作为列索引,0-4。

现在你可以使用比较函数对数组进行测试,只比较colChar。 colIndex跟踪初始列。您现在知道哪个col需要在输出中的哪个位置。

然后,您可以使用几个循环将源列复制到'dest'[6] [5],使用myColHeaders [5] .colIndex来标识每个源列的目标列。

答案 1 :(得分:1)

首先,您必须将每列的第一个元素与所有其他顶级元素进行比较,如果列的第一个元素比下一列的顶部元素那么交换两列。您还可以使用算法标题中的 qsort 功能进行排序。

以下是实施:

#include <stdio.h>
int main(){

    int i,k,j;        

    char matriz[6][5]={
    {'F','H','V','D','U'},
    {'E','L','Q','U','E'},
    {'P','E','R','S','E'},
    {'V','E','R','A','A'},
    {'L','C','A','N','Z'},
    {'A','Z','Z','Z','Z'}};

    for(i=0;i<4;i++)
    {
        for(k=i+1;k<5;k++)
        {   
            //comparing top elements of columns 
            if(matriz[0][i]>matriz[0][k])
            {
                //swapping columns
                for(j=0;j<6;j++)
                {
                    int t=matriz[j][i];
                    matriz[j][i]=matriz[j][k];
                    matriz[j][k]=t;
                }
            }
        }
    }

    //display

    for(i=0;i<6;i++)
    {
        for(k=0;k<5;k++)
        printf("%c ",matriz[i][k]);
        printf("\n");
    }

}
相关问题