排序時如何處理兩個數字相等的事實?

發布 教育 2024-06-17
16個回答
  1. 匿名使用者2024-01-29

    當排序遇到兩個相等的數字時,兩個數字將保持順序,並且兩個數字的位置不會交換。

    如果您有其他條件,例如這組數字的每個數字都有乙個與之關聯的數量(例如 id),對於兩個相等的數字,請考慮它們的 id 大小並進一步排序,然後進行另乙個條件處理。

    它分為 4 個部分。

    或者做後處理排序。

  2. 匿名使用者2024-01-28

    你要問的是,在兩個相等的數字的順序之後,改變兩個數字的原始順序?

    這個問題可以用資料結構中內部排序的穩定性來解釋。

    起泡,廣告訂單穩定 - 不會改變原始訂單。

    選擇性、快速、堆排序不穩定 - 可能會發生變化。

  3. 匿名使用者2024-01-27

    由你來處理它。

  4. 匿名使用者2024-01-26

    如果兩個數字相等,沒關係,反正是一樣的。

  5. 匿名使用者2024-01-25

    MSDN 中的定義:

    templatevoid sort(ranit first, ranit last); //-->1)templatevoid sort(ranit first, ranit last, pred pr); //-->2)

    標頭檔案:include

    using namespace std;

    1.預設排序函式按公升序排列。 對應於 1)。

    sort(a,a+n);這兩個引數分別是要排序的陣列的第乙個位址和最後乙個位址。

    2.您可以編寫自己的 CMP 函式來按特定意圖進行排序。 對應於 2)。

    例如 sort(a,a+n,cmp);

    是陣列 A 的降序。

    另乙個例子是 else

    return 0;

    sort(a,a+n,cmp);

    它按 x 的公升序排序,如果 x 的值相等,則按 y 的公升序排序。

    同樣,C 語言中的 Qsort 也附加了:

    #include

    格式:qsort(陣列名稱,資料編號,sizeof(資料型別),比較函式名稱) (void*)bsearch(指向關鍵字的指標,陣列名稱,查詢編號,sizeof(資料型別),比較函式名稱)。

    int cmp(const void*a,const void *b)

    qsort(data,n,sizeof(int),cmp);int 陣列的快速排序(非降序)

  6. 匿名使用者2024-01-24

    排序函式的用法(呼叫 C++ 排序庫函式)。

    排序陣列,C++ 中有庫函式可以幫助我們做到這一點,所以我們不需要自己程式設計排序。

    1)為什麼要使用C++標準庫中的排序功能。

    sort() 函式是 C++ 中的排序方法之一,學習這種方法也消除了我學習 C++ 後一直使用的氣泡排序和選擇排序導致的執行效率低的問題! 因為使用的排序方法與快速行法類似,時間複雜度為n*log2(n),執行效率高!

    2)如何使用C++標準庫中的排序功能。

    i) 排序函式包含在 C++ 標準庫中,標頭檔案包含,您不必知道標準庫中的排序方法是如何在內部實現的,只要出現我們想要的結果即可!

    ii) 排序函式有三個引數:

    1)第乙個是要排序的陣列的起始位址。

    2)第二個是結束位址(要排序的最後一位數字的下乙個位址)。

    3)第三個引數是排序方式,可以是從大到小,也可以是從小到大,也可以不寫第三個引數,此時預設的排序方式是從小到大。

    排序函式使用模板:

    sort(start,end,sort 方法)。

    讓我們解釋一下如何使用 sort() 函式對陣列中的十個數字進行排序!

    示例:sort 函式沒有第三個引數,實現從小到大。

    #include

    #include

    using namespace std;

    int main()

    for(int i=0;i<10;i++)

    coutfor(int i=0;i<10;i++)

    cout

  7. 匿名使用者2024-01-23

    首先選擇成績欄進行排序(降序),例如B2是成績單的第一行,C2是排名的第一行,如果有50名學生完成了空白部分,則在C2中輸入Rank(B2,B$2:B$51),其他行會自動填寫

  8. 匿名使用者2024-01-22

    公式不能做你從大到小的排序,選單欄裡有乙個排序按鈕準備冰雹,即豎字a-z向下箭頭是模型的公升序,反之亦然是降序。 選擇要排序的行,然後單擊按鈕自動排序,將彈出乙個對話方塊。

  9. 匿名使用者2024-01-21

    #include

    #include

    using namespace std;

    bool compare(int a,int b)int main() i;注意 a,而不是 a[20]int n = sizeof(a) sizeof(a[0]); 計算資料數。

    for(i = 0;i < n;i++)

    cout

    sort(a,a + n,compare);

    for(i = 0;i < n;i++)

    cout

  10. 匿名使用者2024-01-20

    陣列大小為 20,輸出數字數也是 20,但分配的值數不是 20,其他陣列空間預設設定為 0。

  11. 匿名使用者2024-01-19

    你只有 10 個數字,為什麼要按 20 排序?

    將所有 20 個都改為 10 個就好了!

  12. 匿名使用者2024-01-18

    陣列邊界太大,a[20] 只定義了幾個數字,未定義的預設為 0

  13. 匿名使用者2024-01-17

    sort,是乙個函式,那麼這個函式接受 2 個引數,a、b 這個函式在:

    a == b 為 0

    1 在 A > B

    1 在 A > B

    然後排序,根據氣泡排序,傳遞 2 個數字,用於 arr[0] ="10"

    arr[1] = "5"

    然後 a=10 b=5,顯然是 b >,然後排序開始根據這個函式返回的結構 5, 10 進行排名

    然後在第一次結束時:5 10 40 25 1000 1 下乙個:然後是 5 用 40 25 1000 1 行,結尾只有這樣:

    1 10 40 25 1000 5 然後從 10、10 - 40 開始 10 <-25 10 <-1000 10 <-5

    結束後: 1 5 40 25 1000 10 再次 40 : 1 5 10 25 1000 40 再次 25 :

    那麼 1000 : 1 5 10 25 40 1000 到此,最後一位只剩下乙個,沒有什麼可比較的,排序完成。

  14. 匿名使用者2024-01-16

    邏輯是,如果兩個引數之間的差值小於 0,則意味著 a 必須出現在 b 之前,否則出現在 b 之後。

    a 和 b 是陣列中的值。

  15. 匿名使用者2024-01-15

    你需要了解計算的思想,也就是所謂的演算法,然後你才能理解迴圈的寫法,即所謂的選擇方法,就是在當前陣列中選取最大(或最小,取決於你的排序順序)的數字,然後與第乙個數字交換,這樣第乙個數字一定是所有後續數字中最大的乙個; 如果第乙個數字做得好,在從第二個數字到所有數字末尾的範圍內再計算一遍,那麼第二個數字會被替換為除第乙個數字之外的最大數字,以此類推,每次找到剩餘數字的最大數字到頂部位置,當第二個數字從底部完成時, 陣列將按從大到小的順序排列。

    分析:假設 n 個資料(下標範圍為 0 n-1),每行開頭陣列元素的下標為 0、1、2、,..n-2,(最後乙個不需要計算,沒有多餘的元素可以與之比較); 對於所選的下標陣列,需要比較從下標末尾到末尾的數字,假設當前下標是2,那麼要比較的數字是3、4、5、,..

    在進行n-1迴圈的同時,我們生成這兩組數字:使用i迴圈生成0 n-2,即每個迴圈中i的值為0 n-2,迴圈的起始條件為i=0,結束條件為i。

  16. 匿名使用者2024-01-14

    i 從 0 開始,k = i,j 從 i + 1 開始,如果陣列 j 元素小於 k 元素,k = j,並一直比較到陣列的最後乙個元素,這樣找到最小的下標 k,然後 k 與 i 交換,然後找到下乙個 i,直到最後。

相關回答
13個回答2024-06-17

我們很樂意為您解答!

答案是:1 2 和 3 2 >>>More

13個回答2024-06-17

一清一清一刀兩刀,一暴跌,千槍一動,七情六慾。 >>>More

36個回答2024-06-17

定義 在兩個或多個自然數中,如果它們具有相同的倍數,則這些倍數稱為它們的公共倍數。 >>>More

11個回答2024-06-17

609-342 表示已知兩個數字的(和)是 (609) 和乙個數字(加法),並且計算了(另乙個加法)。 >>>More

12個回答2024-06-17

你是什麼年級?

1.求二次函式最大值的方法求解: >>>More