冒泡排序<我的算法成长经历>
2018-01-24 12:12
239 查看
桶排序在时间和空间占用上可以说是非常巨大,比如要对一组五个数字排序,但里边有一个非常大的数字1999909,这个时候就需要申请一个非常大的数组,a[1999909],可见咋空间复杂度和时间复杂度非常高,而且非常浪费,这个时候冒泡排序法就展现出它的特点了:
冒泡排序::
这里有一个形象的代名词:邻居好说话,就是说相邻的两个数交换,冒泡排序的原理是每一趟只能将一个数归位,这就体现出它的时间空间复杂度。有n个数字的话,就需要最多n-1趟(次)排序。
这就是冒泡排序,核心内容就是两个for循环。进行n-1次,每次进行几次交换。
冒泡排序::
这里有一个形象的代名词:邻居好说话,就是说相邻的两个数交换,冒泡排序的原理是每一趟只能将一个数归位,这就体现出它的时间空间复杂度。有n个数字的话,就需要最多n-1趟(次)排序。
#include <stdio.h> int main() { int a[100], i, j, t, n; scanf("%d", &n); //输入一个数n,表示接下来有n个数 for(i=1;i<=n;i++) //循环读入n个数到数组a中 scanf("%d", &a[i]); for (i = 1; i <= n - 1; i++) //n个数排序,只用进行n-1趟 { for (j = 1; j <= n - i; j++) //从第1位开始比较直到最后一个尚未归位的数。 { if (a[j]<a[j + 1]) //比较大小并交换 { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } for (i = 1; i <= n; i++) printf("%d ",a[i]); getchar(); getchar(); return 0; }
这就是冒泡排序,核心内容就是两个for循环。进行n-1次,每次进行几次交换。
相关文章推荐
- 二进制转换<我的算法成长经历>
- 桶排序<我的算法成长经历>
- 算法之旅,直奔<algorithm>之十四 fill_n
- 典型的 C++ 程序员成长经历
- OpenCV——KNN分类算法 <摘>
- 分类算法--贝叶斯分类法(Maprdecue实现)代码实现<转>
- 算法学习----->Insertsort(插入排序)
- 详解嵌入式Linux工程师的成长经历
- 算法入门经典第二版(紫书) 第二章 2-1 -> 2-6
- OpenCV 2 学习笔记(13): 算法的基本设计模式<4> :使用Model-View-Controller模式创建一个应用程序
- 华为牛人的成长经历,永远记得那些IT界吃咋风云的人物!
- 实战c++中的vector系列--对vector<自定义类>使用std::find 和 std::find_if 算法
- 一个简单算法题引发的思考<DNA sorting>(about cin/template/new etc)
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- 编程珠玑读书笔记之----->使用线性算法求解连续子序列的最大和
- 【C++ STL】算法 <algorithm>中各种算法解析
- 数据挖掘相关算法学习计划目录<1>
- 256 <--> 64算法 互转 ( Java实现)
- 算法---->分治法
- 算法-->线性表查找