常用排序算法
2023-03-15 22:50:37 时间
简述一些常用算法,并用代码实现它。
注:动图是在网上找的。
(1)冒泡排序
核心思想:交换序列中相邻两个整数。
测试代码:
1 void bubble_sort(void) 2 { 3 /* 4 * 冒泡排序:以降序为例进行说明 5 * 比较相邻的元素,将值最小的元素交换到右边。 6 */ 7 int a[] = {3, 4, 1, 5, 2}; 8 int i = 0, j = 0; 9 int tmp; 10 11 for (i = 0; i < sizeof(a)/sizeof(int); i++) { 12 for (j = 0; j < sizeof(a)/sizeof(int) - i; j++) { 13 if (a[j] < a[j+1]) { 14 tmp = a[j]; 15 a[j] = a[j+1]; 16 a[j+1] = tmp; 17 } 18 } 19 } 20 for (i = 0; i < sizeof(a)/sizeof(int); i++) { 21 printf("%d ", a[i]); 22 } 23 printf(" "); 24 }
运行结果:
5 4 3 2 1
(2)选择排序
核心思想:每一趟在n-i+1 (i = 1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
测试代码:
1 void select_sort(void) 2 { 3 /* 4 * 选择排序:每一趟在n-i+1 (i = 1,2,...,n-1)个记录中 5 * 选取关键字最小的记录作为有序序列中第i个记录。 6 */ 7 int a[] = {3, 4, 1, 5, 2}; 8 int i = 0, j = 0; 9 int tmp; 10 11 for (i = 0; i < sizeof(a)/sizeof(int); i++) { 12 for (j = i+1; j < sizeof(a)/sizeof(int); j++) { 13 //每次选择出最大的数,并放到前面去 14 if (a[i] < a[j]) { 15 tmp = a[i]; 16 a[i] = a[j]; 17 a[j] = tmp; 18 } 19 } 20 } 21 for (i = 0; i < sizeof(a)/sizeof(int); i++) { 22 printf("%d ", a[i]); 23 } 24 printf(" "); 25 }
运行结果:
5 4 3 2 1
(3)其它算法
后续补充
相关文章
- 我听到过的一个精彩的软件纠错故事
- 为开发人员推荐20个开源工具和应用程序
- SMP、NUMA、MPP体系结构介绍
- Visual Studio 2013新功能预览
- 联调之痛
- 精心整理的68个关于程序猿的一些幽默
- 大数据技术:内包还是外包
- 如何让隐藏在大数据背后的价值发挥出来?
- 最短的崩溃程序(C语言版)
- 学习数据分析的“里程碑”是什么?
- MVC框架PK:Angular、Backbone、CanJS与Ember
- 思科 Cisco Spark Room Kit在大中华区成功落地 思科协作助力雅清达携手3W COFFICE打造高效协作共享空间
- 经验丰富的程序员和代码行数
- 程序员:选择效率,还是选择质量?
- 天马股份:为企业赋能,让商业更简单
- 软件资产管理 企业身旁的定时炸弹
- IDC预测今年全球软件行业收入同比增5.7%
- C++11线程、锁和条件变量
- 如何选择Spark机器学习API
- Visual Studio 2012/2010/2008 远程调试