八大排序学习之一冒泡排序
来源:互联网 发布:手机移动数据自动开启 编辑:程序博客网 时间:2024/06/06 02:22
读的书越多,感慨就越多。与其得过且过,不如现在开始努力。
一直对算法不太感冒,自从实习后认识了很多通过算法进了大公司的大四毕业生,心里甚不是滋味。
好了牢骚发完,开始写冒泡算法。
冒泡算法是我在学校学到的第一个算法,很简单,但是时间复杂度是O(n^2),太高了,因为需要两次循环。
思路呢,就是经过两次遍历,每次取一个最大或者最小的出来。
按照循序一个个的检查,假如前面的比后面的大,就把前面的放到后面。
二话不说,直接贴上交换两个值代码:
void Myswap(int &x,int &y){int temp=0;temp=x;x=y;y=temp;}关键代码:
void Mysort(int a[],int n){ int c=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(a[j]>a[j+1])Myswap(a[j],a[j+1]); //交换大小}}
下面的是完整代码:
#include "stdafx.h"#include <time.h>#include <stdlib.h>#define NUM_LEN 20000void Mysort(int a[],int n);void Myswap(int &x,int &y);void Myswap(int &x,int &y){int temp=0;temp=x;x=y;y=temp;}void Mysort(int a[],int n){ int c=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(a[j]>a[j+1]) //假如前面的比后面的大,就把前面的放到后面Myswap(a[j],a[j+1]); }}int main(int argc, char* argv[]){ int b[10]={2,12,54,3,5,2,4,7,14,6}; srand((unsigned)time(NULL)); //产生2万个随机数 int a[NUM_LEN]; for (int i=0; i<NUM_LEN; i++) a[i]=rand()%101; //产生0-101 float nstart=clock();Mysort(a,NUM_LEN); //排序for( i=0;i<NUM_LEN;i++) printf("%d\n",a[i]);float nend=clock(); printf("排序所用时间:%fs\n",(nend-nstart)/1000);return 0;}
这个是10个元素排序的占用时间
下面是20000个数据的运行时间
0 0
- 八大排序学习之一冒泡排序
- JAVA八大排序算法之一冒泡排序
- 八大排序算法之一冒泡排序
- 八大排序算法学习笔记:冒泡排序
- 八大排序--冒泡排序
- 八大排序--冒泡排序
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法-冒泡排序
- 八大排序之冒泡排序
- 八大排序之--冒泡排序
- 八大排序算法-冒泡排序
- 排序之一---冒泡排序
- 八大排序 -- 交换排序之【冒泡排序】
- 八大算法之冒泡排序
- 八大排序之冒泡算法
- 算法学习之一java实现冒泡排序
- Java实现八大排序之一
- 如何将数据转换libsvm格式文件
- 算法分析——Hanoi塔问题(还是写不出来啊!)
- AAAAAAA
- CI框架源码解析十三之语言类文件Lang.php
- VC获取当前运行目录
- 八大排序学习之一冒泡排序
- ViewPager +Fragment 中Fragment被预加载问题(ViewPager中Fragment的生命周期管理)
- Sharding
- 关于微信分享
- Linux 安装jdk
- Navicat premium MAC破解版
- css-02
- Ext Form用法详解
- MySQL修改语句嵌套子查询时的一个错误