2016-10-10 57 views
1

我知道如何按升序對數組進行排序,但在排序第一個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) 
+3

問題在哪裏?只要設置「尺寸」爲你想要的 –

回答

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

你也應該檢查'n <=尺寸' – roottraveller

+0

@rootTraveller是啊...還會有其他類似的東西,比如'n> 0','n <= size',I我確定OP會親自處理這些問題。我只是向他展示一種方法來克服他的問題,但絕不是我提供了一個完整的解決方案:) – Cherubim

+0

非常感謝。我在'for'循環中使用了'n',因爲我需要數組可修復的大小。如果老師只問最後的'n'號碼,我可以提出一個建議嗎? –

0

您的do循環沒有明顯的功能。您需要做的唯一事情是將size設置爲與陣列大小不同(小於或等於)

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

你並不需要使用do-while環和4替換size(如你說要4個元素進行排序)。

0

在你的情況下,控件將在排序所有元素後進入while-condition,因此不需要添加do-while.Only設置你想要的大小。 int i,j,n = 4,k,temp; int arr [] = {3,5,1,7,9,1,2};

​​
1

你的陣列是越來越排序完成到DO {}來到你的,而條件之前(計數< 5)。 請檢查這一個 - 掃描儀sc =新的掃描儀(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; 

       } 
      } 
     } 
    } 
相關問題