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