修正了三個數字氣泡排序的程式

發布 教育 2024-08-14
10個回答
  1. 匿名使用者2024-02-01

    這不是冒泡,讓我們給你看乙個。 足以讓你看到:

    一點點改進。

    #include

    void main()

    void shift(int *x);

    int a[10],*p,i,m;

    p=a;for(i=0;i<10;i++)scanf("%d", p++) 輸入數字 10。

    scanf("%d",&m);輸入要移動的位數。

    p=a;shift(p);

    for(i=0;i<10;i++,p++)printf("%d",*p);輸出這 10 位數字。

    void shift(int *x)

    int m,i,j,t;

    for (i=0;i=0;j--) *從第1位到第9位。

    x+j+1)=*(x+j);每個位向後移動一位 * x=t; 將第 10 個位置移動到第乙個位置。

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

    鼓泡分選步驟如下:

    #include

    int main()

    int a[10]=;

    int i=0,j=0,t=0;

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

    scanf("%d",&a[i]);

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

    for(j=0;j<10-i;j++)

    return 0;}

    任意輸入十個資料,程式執行結果:

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

    四遍處理(非修飾冒泡測序)。

    第一次交換是 2 次。

    第一遍:22 小於 94,不交換。

    94到17是大交換得到序列22,17,94,125,6394小於125不交換。

    125 大於 63 得到序列 22、17、94、63、125 秒:

    22 到 17 兌換 17、22、94、63,12522 小於 94 不兌換。

    94 大於 63,序列 17、22、63、94、125 第三次交換:很明顯,序列已經按順序排列,不會有交換。

    否則,將有第四次比較,同樣沒有交換。

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

    共10次加工。

    第一次 4 個,第二次 3 個,第三次 2 個,第四次 1 個

    每次比較,我交換的金額都超過一定數量。

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

    氣泡排序是一種通過以時間換空間進行排序的方法,在最壞的情況下,順序的排列變為相反,或者相反順序的數字序列變為順序。 在這種情況下,每次比較都需要交換運算。 例如,數字 5 4 3 2 1 的序列按冒泡公升序排列,第乙個大迴圈從第乙個數字 (5) 開始,到倒數第二個數字 (2) 結束。

    先比較 5 和 4,4 小於 5,交換位置變為 4 5 3 2 1;比較 5 和 3,3 小於 5,交換位置變為 4 3 5 2 1 ......最後,比較 5 和 1,1 小於 5,交換位置變為 4 3 2 1 5。 此時,總共進行了 4 次比較和交換操作,最後 1 個數字成為序列中最大的數字。

    第二個迴圈從第乙個數字 (4) 開始,到倒數第三個數字 (2) 結束。 進行了 3 次比較交換操作。

    所以比較的總數是 4 + 3 + 2 + 1 = 10 次。

    對於一系列 n 位數字,比較次數為 (n-1) +n-2) +1 = n * n - 1) 2,這給出了最大比較次數。

    O(n 2) 表示複雜度的數量級。 例如,如果 n = 10000,則 n(n-1) 2 = (n 2 - n) 2 = (100000000 - 10000) 2,與 10 8 相比,10000 可以忽略不計,因此計算的總數約為 * n 2。 O(n 2) 用於表示其數量級(忽略前面的係數)。

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

    內層迴圈通過程式並直接結束,外層只迴圈一次。

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

    這樣就容易理解了,最好發現第乙個內迴圈沒有交換,說明已經安排好了,不需要進行第二次,最好是o(n),程式會放乙個標誌。

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

    我們可以優化氣泡來考慮以下特殊情況,如果原始資料已經下單,計算機不知道它已經下單了。 所以,仍然需要比較,如果沒有發生資料交換,那麼你就知道它已經有序了,你可以做到。 因此,第二次比較還是必要的,第三次和第五次比較是沒有必要的。

    我們設定乙個布林變數 bo 來記錄是否存在交換。 值 false 表示交換是在行程中進行的,而 true 則不表示。 **下面:

    i:=1; repeat bo:=true; for j:

    1 to n-i do if a[j]=temp; bo:=false; end; inc(i); until bo;所以他的複雜性變成了o(n)! 你看,我玩了這麼多,讓我們給出乙個滿意的答案!!

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

    46<79 79 位置不變。

    79>56 79 倒退。

    所以答案是 46 56 64 38 40 79 43 84,現在 79 排在第 6 位。

    從 2 點開始

    所以答案是最終沉入它的底部 4 分之一。

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

    氣泡排序是一種將一組數字逐個排序的方法,具體分為公升序和降序。

    以公升序為例。

    每次行程的任務是從一組數字的第乙個數字開始,然後依次比較兩個相鄰數字的大小。 既然是公升序,那麼經過比較,如果前者大於後者,那麼兩者互換位置。 就這樣一直持續下去。

    在這種情況下,第一次行程將把最大的數字放在最後。

    而且每次比較行程,都會排除已經生成的結果,比如第二次行程,就不比較最後乙個數字了(已經是最大的了,當然比較一下就好了,只是浪費時間); 在第三次旅行中,最後兩個數字將不再比較......

    每個行程在當前範圍的末尾對最大數字進行排名。

    這個迴圈繼續,每次行程都會丟擲當前範圍內的最大數字。 排序完成。

    下面是公升序排序的示例:

    對於這組數字,第一次跳閘,10比5,10大於5,所以掉倉(5、10、3、11、9),10和3比較,10>3,所以掉期倉位(5、3、10、11、9)、10和11比較,不掉倉; 11與9比較,交換位置(5、3、10、9、11),第一次行程結束;

    第二次旅行,因為 11 已經是最大的,所以只剩下了; 5>3,所以交換倉位(3,5,10,9); 5<10、無需互換倉位; 10>9,交換位置(3,5,9,10),第二次行程結束。

    第三次旅行,只剩下3<5人,沒有必要交換位置; 5<9,無需交換位置,第三趟行程結束。

    第四次行程,左邊,3<5,無需交換位置,第四次行程結束。

    這時,由於只剩下兩個數字,這次旅行將兩個數字較高的那個放在了第二位,所以迴圈到此結束。

    事實證明。 在這個過程中,每次行程都會把兩個相鄰數字中較大的乙個替換到後面,也就是說,在每次行程中,最大的數字都會被替換到最後,就像乙個氣泡浮出水面,越來越大,當它從水裡出來時,它會是最大的。 這就是為什麼它被稱為氣泡排序。

相關回答
10個回答2024-08-14

乙個,555 6666=

二, 5555 66666 = >>>More

16個回答2024-08-14

人形走樣,玩三字127,1像人身體挺直,2像兩條腿走路,7像人彎腰時的姿勢,如果他個人的看法是正確的。

9個回答2024-08-14

芳草:單相思可以250,飽滿:單方面金合歡無處不在,因為113,天涯:相思不只有443 >>>More

57個回答2024-08-14

如果回過頭來,應該是747號,不是常說的波音747嗎? 如果你轉乘飛機,它是747。

8個回答2024-08-14

左右手拉手玩三個數字:猜數字應該是,數字...... 因為: >>>More