排序算法C++&&Python实现---冒泡排序
2017-05-30 11:16
441 查看
本文将介绍基本的冒泡排序算法及两种冒泡排序的优化算法。
一、基本冒泡排序算法
原理:对于待排序数列,从后到前依次比较相邻两个元素,若后面的元素小于前面的元素,则交换。(从小到大排序)
C++实现
//打印排序结果函数 void Print(int a[],int n,int i=0) { //cout<<i<<endl; cout<<"排序后的结果为:"<<endl; for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; } //冒泡排序 void bubbleSort(int a[],int n) { int temp; for(int j=1;j<n;j++) { for(int j=1;j<n;j++) { if(a[j]<a[j-1]) { temp=a[j];a[j]=a[j-1];a[j-1]=temp; } } } Print(a,n); }
Python实现
'''输出排序结果函数''' def Print(ddata): n=len(ddata) for i in range(n): print ddata[i], #其中","为了不让其输出默认的换行符 '''冒泡排序''' def bubbleSort(data,n): for i in range(n)[::-1]: for j in range(1,n-1): if data[j]<data[j-1]: data[j],data[j-1]=data[j-1],data[j] Print(data)
二、冒泡排序改进算法1
原理
设置是否交换标志,若循环完某一趟没有交换任何数据,则证明已排序完成。
C++实现
//冒泡排序改进方法1---设置变化标志,若循环完某一趟没改变任何数据,则证明排序完成 void bubbleSortOpt1(int a[],int n) { for(int j=0;j<n;j++) { int change=0; for(int i=1;i<n;i++) { if(a[i]<a[i-1]) { int temp=a[i];a[i]=a[i-1];a[i-1]=temp; change++; } } cout<<change<<endl; if(change==0) break; } Print(a,n); }
3.Python实现
'''冒泡排序优化方法1---加入变化标志''' def bubbleSortOpt1(data,n): for i in range(n)[::-1]: change=0 for j in range(1,n): if data[j]<data[j-1]: change+=1 data[j],data[j-1]=data[j-1],data[j] if change==0: break Print(data)
三、 冒泡排序改进算法2
原理
记录每趟循环交换后的位置,下次排序时,只排到此位置即可,因为后面的数据都以排好。
C++实现
//冒泡排序优化方法2---记录每趟排序完成后的位置,下次排序到此位置便结束 void bubbleSortOpt2(int a[],int n) { int i=n; while(i>0) { int position=0; for(int j=1;j<i;j++) { if(a[j]<a[j-1]) { position=j; int temp=a[j];a[j]=a[j-1];a[j-1]=temp; } } i=position; } Print(a,n); }
Python实现
'''冒泡排序优化方法2---记录变化位置''' def bubbleSortOpt2(data,n): for i in range(n)[::-1]: position=0 for j in range(1,i): if data[j]<data[j-1]: position=j data[j],data[j-1]=data[j-1],data[j] i=position Print(data)
相关文章推荐
- 排序算法C++&&Python实现---基数排序
- 排序算法C++&&Python实现---归并排序
- 排序算法C++&&Python实现---归并排序
- 排序算法C++&&Python实现---归并排序
- Python实现冒泡排序
- 爬虫总结(一)-- 爬虫基础 & python实现
- 【代码】Python冒泡排序的实现
- 从排列与组合的python实现到"生日问题"的解释
- python实现冒泡排序的简单示例
- Python-远程管理-Paramiko实现ssh&sftp
- 排序算法C++ && Python实现---直接插入排序
- python实现折半查找算法&&归并排序算法
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
- python实现冒泡排序
- 算法实现-->冒泡排序
- 冒泡排序-Python与PHP实现版
- Python实现排序算法之冒泡排序
- python3实现冒泡排序和插入排序
- 用python实现一个socket echo程序 && tcp socket的几个关闭状态
- python实现2种简单的排序算法--冒泡排序和选择排序