c - 排序数组的前 n 个元素

标签 c arrays sorting

我知道如何按升序对数组进行排序,但是当只对前 n 个(在我的例子中是 4 个)元素进行排序时,我不太明白。我试图添加一个计数值和 do-while 循环,但它仍然对所有元素进行排序。有什么想法吗?

    do{

        for(i=0; i<size; i++){
            for(j=i+1; j<size; j++){
                if(arr[j] < arr[i]){
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    count++;
                }
            }
        }
      }while(count<5)

最佳答案

I know how to sort an array by ascending order, but not quite catch it when just sort first n elements

没什么不同

不是使用 for 循环对整个数组的元素进行排序,而是通过更改 size 的值仅对前 n 元素使用它到 n

的值
int n;           //variable to store the value of 'n'
scanf("%d", &n); //scan value of 'n'

size = n;        //assigning value of 'n' to 'size'

for(i=0; i < size; i++)
{
    for(j = i+1; j < size; j++)
    {
        if(arr[j] < arr[i])
        {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
}

或通过

如果您稍后在程序中需要 size 的值,请使用 n 而不是 size

    int n;           //variable to store the value of 'n'
    scanf("%d", &n); //scan value of 'n'

    for(i=0; i < n; i++)
    {
        for(j = i+1; j < n; j++)
        {
            if(arr[j] < arr[i])
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }

关于c - 排序数组的前 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39957099/

相关文章:

C 基础知识。如何为 2 个不同的登录 Pin 码创建循环

c - VS 2012 printf() 的舍入行为

指针可以转换成void指针吗?

arrays - MongoDB - 更新多个数组中的元素

java - 如何在 android 中按升序或降序值对 arraylist 进行排序?

c - 来自 x86_64 Linux 中内联 asm 的系统调用?

javascript - 构造JS数据的最佳方式jQuery多类多维数组

调用由结构体数组中的函数指针成员指向的函数

javascript - 如何按数字顺序然后按字母顺序对 JavaScript 对象数组进行排序?

python - 根据前面列中值的排名在数据框中附加列