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
编辑:陈鑫
转载是一种动力 分享是一种美德