[英]In the array of n elements, first n-(root)n elements are sorted, we have to sort the array
[英]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.