繁体   English   中英

排序数组的前n个元素

[英]sort first n element of array

我知道如何按升序对数组进行排序,但是在排序第一个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)

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

你不需要一个do-while循环。 只需用n更新size的值即可。

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;
         }
     }
}

我知道如何按升序对数组进行排序,但是在排序前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;
        }
    }
}

或者

如果在程序中稍后需要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;
            }
        }
    }

您不需要使用do-while循环并将size替换为4(正如您所说的那样,您要对4个元素进行排序)。

在你的情况下,控制将在排序所有元素后转到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;

            }
        }
   }

在进入while条件(count <5)之前,您的数组已经完成排序到do {}。 请检查一下 - Scanner sc = new Scanner(System.in); System.out.println(“输入要排序的前n个数字”); 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;

                }
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM