数据结构(11) - 冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
1 /** 2 * C data structure bubble sort example. 3 * 4 * License - MIT. 5 */ 6 7 #include <stdio.h> 8 9 10 #define DISPLAY_ARRAY(i, buf, len) \ 11 do { \ 12 for (i = 0; i < len; i++) \ 13 printf("%d ", buf[i]); \ 14 printf("\n"); \ 15 } while(0) 16 17 18 /** 19 * bubble_sort - Bubble sort. 20 */ 21 int bubble_sort(int *buf, int len) 22 { 23 int i = -1, 24 j = -1, 25 tmp = -1; 26 27 for (i = 0; i < len - 1; i++) { 28 for (j = 0; j < len - 1 - i; j++) { 29 if (buf[j] > buf[j + 1]) { 30 tmp = buf[j]; 31 buf[j] = buf[j + 1]; 32 buf[j + 1] = tmp; 33 } 34 } 35 } 36 37 return 0; 38 } 39 40 41 /** 42 * Main function. 43 */ 44 int main(void) 45 { 46 int i = 0; 47 int buf[] = {27, 13, 18, 29, 74, 73, 50, 65, 97, 36}; 48 int len = sizeof(buf) / sizeof(int); 49 50 printf("The original array:\n"); 51 DISPLAY_ARRAY(i, buf, len); 52 53 bubble_sort(buf, len); 54 55 printf("The sort array:\n"); 56 DISPLAY_ARRAY(i, buf, len); 57 58 return 0; 59 }
详细请参考Github: [Link] [https://github.com/Phoebus-Ma/C-Helper/tree/main/Class-1/Sort.C].
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通