簡體   English   中英

冒泡排序,以便所有以數字5結尾的數字都按升序排列

[英]Bubble Sort so that all numbers ending in the digit 5 comes in ascending order

我正在嘗試實現整數數組的冒泡排序,以便所有以數字5結尾的數字都首先出現(升序),然后是所有未以5結尾的數字(升序)。

在BubbleSort之前:[5、1、23、45、65、89,-85,-76]

在冒泡排序之后(尾數5(升序)):[-85、5、45、65,-76、1、23、89]

因此,我確實知道如何編寫標准的Bubblesort,但是我無法將注意力集中在附加規則上(以數字5結尾)。 任何幫助表示贊賞。

謝謝

唯一需要更改的是比較代碼。

假設冒泡排序代碼正常工作,並使用簡單的比較,例如:

if (a < b) ...

創建功能如下。 a%10將產生值-9,-8,...,8,9 測試此結果是5還是-5 |a%10| == 5時,下面的測試 |a%10| == 5

// Return 1 when a should come before b in the array.
int cmp5(int a, int b) {
  int a5 = abs(a%10) == 5;
  int b5 = abs(b%10) == 5;
  // Since a and b are the same "five-ness", do a simple compare
  if (a5 == b5) return a < b;
  if (a5) return 1;
  return 0;
  // Could replace above 2 lines with `return a5;`
}

並打電話

 if (cmp5(a,b)) ...

正如您所說,您知道標准氣泡排序,現在請執行以下操作

  1. 取兩個數組/向量(您喜歡的一個)
  2. 一個為5的倍數,另一個為剩余

  3. 現在只需制作標准的冒泡排序函數bubbleort(array [])

  4. 過濾兩個數組的輸入

  5. 過濾后,調用氣泡排序,您就完成了
  6. 並將兩個結果放在一起

暫無
暫無

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

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