【发布时间】:2015-04-10 04:25:00
【问题描述】:
我最近在处理这段代码的交换部分时遇到了这个问题,所以这段代码所做的是输入一个数组并使用冒泡排序方法对其进行排序。读取它的文本文件有 10 个数字和名称。像这样:
约翰 1
马克 2
马太福音 2
路加福音 3
伊萨克 4
凯恩 5
瑞恩 7
亚伯 2
亚当 9
前夕 10
但是当它打印出来时,它会显示:
约翰 1
马克 2
马太福音 2
亚伯 2
亚伯 3
亚伯 4
亚伯 5
亚伯 7
亚当 9
前夕 10
抱歉,问题是为什么它会重复 Abel,我该怎么做才能解决它?
void bubbleSort (Word q){
int last = 9;
int Swapped = 1;
int i = 0;
int m = 0;
char* temp = "Hello";
printf("Temp is: %s \n", temp);
int tempA;
while (Swapped == 1){
Swapped = 0;
i = 1;
while (i < last){
printf("%d \n", i);
if (q.data[i] > q.data[i+1]) {
printf("Hello: %d \n", i);
//Copy Name of Element
temp = q.name[i];
strcpy(q.name[i], q.name[i+1]);
strcpy(q.name[i+1] , temp);
//Copy Data of corresponding element
tempA = q.data[i];
q.data[i] = q.data[i+1];
q.data[i+1] = tempA;
Swapped = 1;
}
i = i + 1;
}
last = last - 1;
}
last = 9;
while (m <= last){
printf("Name: %s, Data: %d \n", q.name[m], q.data[m]);
m++;
}
}
【问题讨论】:
-
您正在根据结构的
data成员进行排序。因此,您的输出将根据该成员进行排序。你有什么问题? -
@askmish:输出中似乎缺少 Luke 3,但我同意这个问题不是很清楚。