C语言算法之桶排序冒泡排序
点击
上方蓝字
什么是桶排序?
如图所示:
请看桶排序源代码:
void rank(int a[], int len);int main() {int a[] = {2, 54, 1, 4, 15, 45, 95, 34, 48, 58,};int len = sizeof(a) / sizeof(a[0]);rank(a, len);return 0;}void rank(int a[], int len) {int num[100];for (int i = 0; i < 100; ++i) {num[i] = 0;}for (int j = 0; j < len; ++j) {num[a[j]]++;}for (int k = 100; k >= 0; --k) {if (num[k] != 0) {for (int l = 0; l < num[k]; ++l) {printf("%d ", k);}}}}
运行上述源代码,会得到以下结果:
95 58 54 48 45 34 15 4 2 1
什么是冒泡排序?
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
请看冒泡排序源代码:
void rank(int a[], int len);int main() {int a[] = {2, 54, 1, 4, 15, 45, 95, 34, 48, 58,};int len = sizeof(a) / sizeof(a[0]);rank(a, len);return 0;}void rank(int a[], int len) {for (int i = 0; i < len - 1; ++i) {for (int j = 0; j < len - 1 - i; ++j) {if (a[j] < a[j + 1]) {int t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}}
运行上述源代码,会得到以下结果:
95 58 54 48 45 34 15 4 2 1
END
编辑:陈鑫
转载是一种动力 分享是一种美德
