【发布时间】:2020-05-24 01:55:48
【问题描述】:
我目前是一名 CS50x 学生。
我一直在玩弄搜索和排序算法。试图在代码中理解它们。现在,关于冒泡排序的主题:我创建了我认为是冒泡排序算法。但是我不太适合需要将交换计数设置为非零值的想法。我的算法(如下)确实对所有数字进行了排序。不过,我在哪里适合交换想法?如果有人能这么好心地解释一下,我将不胜感激。
#import <stdio.h>
#import <cs50.h>
int main(void)
{
// Creating an unsorted array
int count = 10;
int array[count];
for (int z = 0; z < count; z++)
scanf("%i", &array[z]);
// Bubble Sort
int buffer;
for (int b = 0; b < count; b++)
{
int a = 0;
while (a < count)
{
if (array[a] > array[a+1])
{
buffer = array[a];
array[a] = array[a+1];
array[a+1] = buffer;
}
a++;
}
}
printf("Sorted: ");
for (int b = 0; b < count; b++)
printf("%i ", array[b]);
printf("\n");
}
【问题讨论】:
-
您是否看到您的代码中有任何可以被描述为“交换”两件事的部分?
-
您的内部
while应该是for考虑到您的使用方式:for (int a = 0; a < count; ++a) -
提示:注意不要离开数组的末端,如
a + 1必须是count。 -
代码中
buffer用于在两个单独的数组索引处交换 值的部分——看起来很像swap算法。 在该代码之前,array[a]和array[a+1]中的内容是什么? 在该代码之后array[a]和array[a+1]中的内容是什么?
标签: c bubble-sort cs50