c - 如何删除一个元素来对数组进行排序

标签 c arrays sorting do-while

我必须编写一个程序,将数组按升序排序,这是我的代码,方法是找到最大的元素,然后将其分配给第二个数组,然后从第一个数组中删除该元素,这样我可以找到其中第二大的一个,然后将其重新分配给第二个数组的第二个位置。这是我的代码:

#include <stdio.h>
#include <conio.h>

int main(){

    int x;
    scanf("%d", &x);
    int arr[x], arr1[x];

    int i;
    for(i = 0; i < x; i++){
          scanf("%d", &arr[i]);
          }

    do{
          int j, max = 0;
    for(j= 0; j < x; j++){
           if(arr[j] > max){
                     max = arr[j];
                     }
           }
    int k = 0;
    arr1[k] = max;
    k++;


          }while(sizeof(arr1) < sizeof(arr));

    int l;
    for(l = 0; l < x; l++){
          printf("%d\n", arr1[l]);
          getch();
          }
    }

但由于某种原因,它没有分配第二个数组的第二个值。

最佳答案

sizeof(arr1) < sizeof(arr)这将始终评估为 FALSE ,因为两个数组的大小相同,如代码所示。

这就是为什么 do..while循环只执行一次。

此外,正如 Daniofb 提供的答案中所建议的,

int k = 0;
arr1[k] = max;
k++;

对于 do...while 的每次迭代都是错误的,它将初始化 k0 ,因此,您最终将覆盖 arr1[0]每次的元素值。请删除int k = 0;从循环内部。

关于c - 如何删除一个元素来对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27637063/

相关文章:

c++ - C++ 中基于指针的冒泡排序

Java:根据 Firebase 数据库中的数据对子项进行排序

创建命令来运行并向 Windows 应用程序提供输入

javascript - JS : Associative array access over variable?

c - openssl/rsa.h : No such file or directory in C windows

c - 指向结构指针的指针

javascript - 如何按日期对数组中的项目进行分组?

javascript - 按对象属性的键对对象数组进行排序

c - 读取二进制文件,存入缓冲区,打印缓冲区内容

c - 在密码学、C 编程方面需要帮助