您好我有一个以下列方式启动的二维数组:
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,但我不确定如何。
答案 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");
}
}