C++学习记录10--冒泡排序
2017-03-13 09:08
211 查看
冒泡排序(bubble sort)是最基本的排序方法,总结一下,对于有n个元素的数组,有两种方式:从左向右或从右向左冒泡:
1、从小到大排序。
2、从大到小排序。
1、从小到大排序。
2、从小到大排序。
一、从前往后
每次趟锁定该趟末尾的元素,重点2/2/2,i<n-1,j<n-1-i。
1、从小到大排序。
#include<iostream> #include<stdlib.h> #include<time.h> using namespace std; void coutarray(int a[]) { for(int i=0;i<20;i++) cout<<a[i]<<(i%5==4?'\n':'\t'); } void bubble1(int a[],int n) { bool flag=true; int temp; for(int i=0;i<n-1&&flag;i++) { flag=false; for(int j=0;j<n-1-i;j++) if(a[j]>a[j+1]) { temp=a[j],a[j]=a[j+1],a[j+1]=temp; flag=true; } } } void main() { int a[20]={0}; int n=10; srand(time(0)); for(int i=0;i<n;i++) cout<<(a[i]=rand()%101)<<(i%5==4?'\n':'\t'); bubble1(a,20); cout<<"从前往后冒大泡到数组尾(从小到大):\n"; coutarray(a); }
2、从大到小排序。
void bubble2(int a[],int n) { bool flag=true; int temp; for(int i=0;i<n-1&&flag;i++) { flag=false; for(int j=0;j<n-1-i;j++) if(a[j]<a[j+1]) { temp=a[j],a[j]=a[j+1],a[j+1]=temp; flag=true; } } }
二、从后往前
每次趟锁定该趟最前端元素,重点i=n-1,j>n-1-i。
1、从小到大排序。
void bubble3(int a[],int n) { bool flag=true; int temp; for(int i=n-1;i>0&&flag;i--) { flag=false; for(int j=n-1;j>n-1-i;j--) if(a[j]>a[j-1]) { temp=a[j],a[j]=a[j-1],a[j-1]=temp; flag=true; } } }
2、从小到大排序。
void bubble4(int a[],int n) { bool flag=true; int temp; for(int i=n-1;i>0&&flag;i--) { flag=false; for(int j=n-1;j>n-1-i;j--) if(a[j]<a[j-1]) { temp=a[j],a[j]=a[j-1],a[j-1]=temp; flag=true; } } }
相关文章推荐
- 记录一个新人的C++之路,以供后来的新人学习
- Effective C++学习记录之Things To Remember
- C++ 学习笔记10
- 2011/10/05~10/06 c++复习与学习
- C++ 对象模型学习记录(3)--- 第1章 关于对象(未完)
- 记录我在C++学习中的点点滴滴!
- C++学习、成长记录(2011-2012第一学期第17周)
- Windows via C/C++ 学习(10)子进程
- 20101231学习记录C++ STL
- C语言与C++中中编译预处理的学习记录
- Pro visual c++/cli and .net 2.0 platform2 学习笔记(10 第四章 高级C++/CLI)
- 数据结构学习记录连载10(队列提高要求实现)
- 数据结构学习记录连载10(队列提高要求实现)
- C++学习文章链接记录
- 学习C++零星记录
- C++学习笔记(10)——虚基类的作用
- 20101229学习记录C++ STL
- 10-11-22工作学习记录(关于无线网络和有线网络同时使用的办法)
- C++ 对象模型学习记录(1)--- 第2章 构造函数语义学
- C++学习、成长记录(2011-2012第一学期第17周)