買書排序問題 C語言演算法

2021-10-02 06:47:08 字數 1459 閱讀 4318

#includemain()

for(i=1;i<=5;i++)

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

}

首先申明乙個陣列表示編號為0~10的桶,第乙個for迴圈,使每個桶的初始值為0,第二個for迴圈,是迴圈輸入5個數,並讀取這個數,讀乙個數,向對應的桶裡插乙個?,也就是a[t]++的含義,加一,第三個for迴圈就是依次判斷編號0-10的桶,第四個for迴圈判斷出現幾次就將桶的編號列印幾次。

根據這個思路,我們再返回看圖書館對書的排序問題。根據這個問題我們發現稍加修改,我們就可以達到去重的效果。

**如下:

#includemain()

printf("請問你想輸入幾個數\n");

scanf("%d",&n);

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

for(i=1;i<=1000;i++)

} }

執行結果:

輸入:

1020 40 32 67 40 20 89 300 400 15

則輸出:

820 40 32 67 89 300 400 15。

我們發現這個時候只達到了去重的效果,而我們還需要排序,下面所用的氣泡排序可以到達去重和排序的效果。

2.氣泡排序法:

那麼什麼是氣泡排序法呢?

首先我們觀察**

#includemain()

for(i=1;i<=n-14;i++)

}} for(i=1;i<=n;i++)

}

氣泡排序的基本思想是:比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。

這裡舉例乙個從大到小排序:

例如:1,3,2,4,5

首先1,3比較:1<3所以交換位置,得到:3,1,2,4,5

1,2比較:1<2所以交換位置,得到:3,2,1,4,5

以此類推 最終第一輪比較結果為:3,2,4,5,1

接下來3,2比較,3>2,不交換,

3,4比較,3<4交換位置得到:4,2,3,5,1

以此類推:得到4,2,5,3,1

經過n-1輪排序得到5,4,3,2,1

而我們這道題還需要去重,只需要在輸出的時候預先判斷一下當前這個數a[i]與前面乙個數a[i-1]是否相同就好了

**如下:

#includemain()

for(i=1;i<=n-1;i++)

} }printf("%d",a[1]);

for(i=2;i<=n;i++) }

}

我們可以看出前三個for迴圈是描述氣泡排序的,之後我們先輸出第乙個數,最後乙個for迴圈從2開始,判斷你要輸出的這個數是否等於前乙個輸出的數,如果等於則不輸出,這樣就達到了去重的效果。

買書問題 動態規劃C

在節假日的時候,書店一般都會做 活動。由於 哈利波特 系列相當暢銷,店長決定通過 活動來回饋讀者。上櫃的 哈利波特 平裝書系列中,一共有五卷。假設每一捲單獨銷售均需8歐元。如果讀者一次購買不同的兩卷,就可以扣除5 的費用,三卷則更多,假設具體折扣的情況如下 本數折扣25 310 420 525 在乙...

c語言排序演算法

很多朋友是以譚浩強老師編的 c語言教程 作為學習 c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者...

c語言排序演算法

c語言排序演算法 非穩定的排序演算法 選擇排序 快速排序 希爾排序 堆排序 穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序是穩定的排序演算法。讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若...