你好!对不起,代码不能更短,每一行都可以
  对于输出至关重要。这是冒泡的代码。 QUELL是FILE IM
  阅读。该文件包含3390行数字。 ///这里是问题:
  当我选择排序数组时,第一行始终保持不变,
  就像它从未改变过。我怎样才能解决这个问题?


    int sorta[3390];
    for(int i=0; i < 3390; ++i){
        fgets(string, MAXZEILE, QUELL);
        sscanf(string, "%d", &a);
        sorta[i]=a;
    }
    for(int y=0; y < 3390; ++y){
    for(int x=3388; x>y; --x){
        if (sorta[x] >= sorta[x+1]){
        int tmp = sorta[x];
        sorta[x] = sorta[x+1];
        sorta[x+1] = tmp;

最佳答案

内循环迭代x>y的时间。这将错过您希望x等于y的最后一次迭代。长话短说-用>替换>=,您应该可以:

for(int y=0; y < 3390; ++y) {
    for(int x=3388; x >= y; --x) {
    // Here -----------^

关于c - Bubblesort时,Array [0]不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38164806/

10-10 09:13
查看更多