排序数组的前n个元素

时间:2016-10-10 11:21:24

标签: 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)

6 个答案:

答案 0 :(得分:0)

您的do循环没有明显的功能。您唯一需要做的就是将size设置为与数组大小不同(小于或等于)的东西

答案 1 :(得分:0)

你不需要do-while循环。只需按size更新n的值。

size = 4; //assign the value till you want to sort
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;
         }
     }
}

答案 2 :(得分:0)

  

我知道如何按升序对数组进行排序,但在排序第一个n元素时不能完全理解它

没有太大区别

通过将for的值更改为n的值,而不是使用size循环对整个数组的元素进行排序,仅将其用于第一个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;
        }
    }
}

如果您稍后在程序中要求n的值,则使用size代替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;
            }
        }
    }

答案 3 :(得分:0)

您不需要使用do-while循环并将size替换为4(因为您已经告知要对4个元素进行排序)。

答案 4 :(得分:0)

在你的情况下,控制将在排序所有元素后转到while条件。所以不需要添加do-while。只需设置你想要的大小。 int i,j,n = 4,k,temp;     int arr [] = {3,5,1,7,9,1,2};

    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;

            }
        }
   }

答案 5 :(得分:0)

在进入while条件之前,您的数组已经完成排序到do {}(计数&lt; 5)。 请检查一下 -         Scanner sc = new Scanner(System.in);         System.out.println(&#34;输入要排序的前n个数字&#34;);         int firstN = sc.nextInt();

    int arr[]={2,3,8,1,0,5,4};

    if(firstN<=arr.length)
    {
        for(int i=0; i<firstN; i++){
            for(int j=i+1; j<firstN; j++){
                if(arr[j] < arr[i]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;

                }
            }
        }
    }