#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 開始,依次將其和後面的元素比較,若...