冒泡排序的初级优化及递归
来源:互联网 发布:表格算量软件 编辑:程序博客网 时间:2024/04/29 04:44
- 冒泡排序
- 方法及优化
2.1普通方法
2.2递归方法
2.3简单优化方法
3.总结
一. 冒泡排序
简述:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成(copy from baidu)
二.方法及优化
普通方法:①大循环遍历n-1次,用i记录每次的变化②小循环遍历(n-i)次③小循环内满足条件则交换
代码如下:
class BubbleSort {public: int* bubbleSort(int* a, int n) { // write code here for(int i=0;i<n-1;i++) for(int j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { int temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } return a; }};
递归方法:①起始位置不变,递归过程修改数组大小
#include<iostream>using namespace std;void bubbleSort(int *data, int end){ if (end>0) { for (int i = 0; i < end- 1; i++) { if (data[i] > data[i + 1]) { int temp = data[i]; data[i] = data[i + 1]; data[i + 1] = temp; } } end--; bubbleSort(data, end); }}void main(){ int a[] = { 1, 7, 9, 3, 2, 5,6,7,8 }; bubbleSort(a,9); for(int i=0;i<sizeof(a)/sizeof(int)-1;i++) cout<<a[i]<<" "; cout<<endl;}
代码如下:
简单优化方法:①小循环没有进行交换则退出
代码如下:
class BubbleSort {public: int* bubbleSort(int* a, int n) { // write code here bool flag=true; for(int i=0;i<n-1,flag==true;i++) { flag=false; for(int j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { int temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; flag=true; } } } return a; }};
扩展:
进一步优化算法:
http://blog.csdn.net/tjunxin/article/details/8711389
三.总结
I.最常见的问题里面往往蕴涵很多小知识,小细节,许多积累II.让我们一同努力,明天会更好!
0 0
- 冒泡排序的初级优化及递归
- 冒泡排序及递归
- 冒泡排序及优化
- 冒泡排序及优化
- 冒泡排序及优化
- 冒泡排序及优化
- 冒泡排序及优化
- 冒泡法排序及二分法查找的递归使用
- 冒泡排序及简单优化
- 冒泡排序及算法优化
- 冒泡排序算法及优化
- C++ 冒泡排序及优化
- 冒泡排序的优化
- 冒泡排序的优化
- 冒泡排序的优化
- 优化的冒泡排序
- 冒泡排序的优化
- 冒泡排序的优化
- Deep learning:四十六(DropConnect简单理解)
- 机器学习——线性回归
- 马尔科夫蒙特卡洛算法(MCMC)
- Jetty反向代理
- Deep learning:四十七(Stochastic Pooling简单理解)
- 冒泡排序的初级优化及递归
- 官网下载JDK教程
- UDP协议详解
- Deep learning:四十八(Contractive AutoEncoder简单理解)
- ROS基础学习笔记——工作空间、CMakeList、package.xml
- 二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
- 一些Android Demo的网址
- 第三周项目-换分币
- 用while(true)和continue、break来实现在一个大循环里switch