簡體   English   中英

C++ arrays中的排序數字

[英]C++ Sorting numbers in arrays

我正在努力解決這個問題:

  • 1 10
  • 2 9
  • 3 8
  • 4 7
  • 5 6

我怎么做?

我的代碼:

 #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        const int n=10;
        int Tab[n]={1,2,3,4,5,6,7,8,9,10};
    
    
        for(int i=0; i<5; i++)
            for(int j=5; j>=0; j--)
                cout << Tab[i] << " " << Tab[j] << endl;
    
    
        return 0;
    }

我怎么做?

您不需要 2 個循環,只需使用一個循環並計算第二個索引:

    for(int i=0; i<n/2; i++) 
        cout << Tab[i] << " " << Tab[n-i-1] << endl;

活生生的例子

對於具有奇數個元素的數組,這種形式的 PS 將跳過中間一個。 如果您希望它被打印兩次,請將循環條件更改為:

    for(int i=0; i<(n+1)/2; i++) 

對於偶數元素,它會像以前一樣工作。

您的代碼存在多個問題。

  1. 您需要迭代數組的所有元素。 所以for循環條件應該是i<(數組長度)。

  2. 有多種排序算法可以對數組進行排序,在每種算法中,您都需要將正在處理的元素與其他元素進行比較,以確定其在最終數組中的位置。

偽代碼應該看起來像

first for loop
    second for loop 
      if element ith  > element jth   //assuming you wanted to sort in ascending format
         swap(element i and j)

我沒有分享完整的代碼,因為這似乎是一個家庭作業問題,我建議你應該嘗試自己解決。

如果您看到任何其他問題。 請更新您的問題。

如果要對數組進行排序,可以使用 std::sort function。 這個 function 適用於數組或向量。 你的是數組。 需要兩個 arguments:數組的開頭和希望數組排序的長度 n。 例子

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    sort(arr, arr + n);
 
    cout << "\nArray after sorting ";

    for (int i = 0; i < n; ++i)
        cout << arr[i] << " ";
 
    return 0;
}

這將按升序排序。 您可以再添加一個參數以降序排序:

排序(arr,arr + n,更大());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM