【发布时间】:2020-02-26 23:04:59
【问题描述】:
我尝试的算法没有正确排序代码并返回 0。
我曾尝试将代码外包给一个函数以使其更清晰,但我就是想不通。
#include <stdio.h>
int main(void)
{
int n,i,j,size,temp,counter;
int k;
printf("How many numbers to sort?\n");
scanf("%d",&size);
int array[size];
for(i=0;i<size;i++)
{
printf("Enter number %d\n",i+1);
scanf("%d",&k);
array[i] = k;
}
// if statement for every element in the array, if it is not all minimum, then the for loop below needs to be activated.
for(j=0;j<size;j++,counter = 0) //this code runs x times, bubble sort requires x test runs.
// each time it runs, it resets counter to 0 and counts the number of mismatched elemnts in the array sorting small to large. If counter >= 1, has to run again.
// can make j < size or j < 2...
{
printf("Iteration# %d\n",j+1);
for(i=0;i<size;i++)
{
if(array[i] > array[i+1])
{
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
counter++;
printf("%d\n",array[i]);
}
}
if (counter == 0)
{
break;
}
}
return 0;
}
输出一直有效,直到用户完成输入,然后它给我从一到五的迭代,并打印 0 而不是打印排序后的数组。目标是一次使用冒泡方法对数组进行排序并打印每一步,我还希望在算法排序后停止排序,因为如果计数器为 0,则表示数组已排序,程序应该停止.但是一直到5,我真的不确定错误在哪里。
【问题讨论】:
-
for(i=0;i<size;i++)然后array[i] = array[i+1];
标签: c arrays sorting bubble-sort