Ich versuche, eine Reihe von zweidimensionalen Array zu sortieren. Aber ich kann es nicht erreichen.Sortieren von Elementen in einer Zeile in einem zweidimensionalen Array mit Zeigern
Für zB:
7 6 5
5 7 6
8 2 9
2 3 4
so sein:
5 6 7
5 6 7
2 8 9
2 3 4
Unten ist mein Code:
void sort(int *a,int num){
int i,j,temp;
for(i=0;i<num-1;i++){
for (j=0;j<num-i-1;j++){
if (*((a+i*3)+j)>*((a+i*3)+j+1)){
temp=*((a+i*3)+j);
*((a+i*3)+j)=*((a+i*3)+j+1);
*((a+i*3)+j+1)=temp;
}
}
}
for(i=0;i<num;i++){
for(j=0;j<3;j++)
printf("%d ",*((a+i*3)+j));
printf("\n");
}
}
Ausgabe des obigen Codes:
6 5 5
7 6 7
2 8 9
2 3 4
Kann jemand sagen, was das Problem im Code ist? Vielen Dank im Voraus. : D
EDIT: Also sollte der obige Code so aussehen?
void sort(int *a,int num){
int i,j,temp;
for(i=0;i<num-1;i++){
for (j=0;j<num-i-1;j++){
if (*(*(a+i)+j)>*(*(a+i)+j+1)){
temp=*(*(a+i)+j);
*(*(a+i)+j)=*(*(a+i)+j+1);
*(*(a+m)+j+1)=temp;
}
}
}
}
Es gibt kein 2D-Array. Nur ein Zeiger auf 'int'. Die Verwendung eines 2D-Arrays (bzw. eines Pointers auf ein 1D-Array) und des Indexoperators würde dieses Chaos halbwegs lesbar machen. – Olaf