bubble_sort
来源:互联网 发布:linux vim中文手册 编辑:程序博客网 时间:2024/04/30 09:07
现在来讲下冒泡排序。
基本思想:从一端开始,逐个比较相邻的两个元素,发现倒序即交换。
贴下我的代码:(升序排列)
代码一:(每次都首先将未排序的最小数冒到数组最前端)
#include<iostream>using namespace std;/*从数组末端开始*/void bubble_sort(int a[],int n) {int i,j,temp;for(i=0;i<n-1;i++) //i<n与i<n-1等效{for(j=n-1;j>i;j--) {if(a[j]<a[j-1]){temp=a[j];a[j]=a[j-1];a[j-1]=temp;}}}}int main(){int i,n;int a[100];while(cin>>n,n) {for(i=0;i<n;i++)cin>>a[i];bubble_sort(a,n);for(i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl<<endl;}return 0;}
代码二:(每次都将未排序的最大数首先冒到数组最后)
/*从数组首部开始*/void bubble_sort(int a[],int n) {int i,j,temp;for(i=0;i<n-1;i++) {for(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;}}}}
以上的两个代码都是"中规中矩"的,还有可以改善的余地。比如说,如果在某一趟比较中发现已经没有
对换了,则说明数组已经有序了。可以结束。以下代码中引入bool exchanged,来辅助判断某一次排序是否
进行了交换。
代码三如下:
void bubble_sort(int a[],int n) {int i,j,temp;bool exchanged; //用来判断每次是否进行了遍历i=1;do{exchanged=false;for(j=n-1;j>=i;j--){if(a[j]<a[j-1]){temp=a[j];a[j]=a[j-1];a[j-1]=temp;exchanged=true;}}i++;}while(i<=n-1 && exchanged==true);}
再来分析下吧:
以升序排列来分析哈。基本思想是从最后一个元素开始两两比较,如果后面的数比前面的数小,则调换
两数次序,直至比较到最后一个数。此时则确定一个最小数排到最前面了。那么,下次比较则可以不再比较该
数了。就是代码中的第二个for循环,for(j=n-1;j>i;j--)。第一个for循环则是记录已有多少个数已在确定位置了。
Attiontion:
①冒泡排序也是种原地排序,只需temp这一辅助空间。
②冒泡排序的时间性能是O(n^2),空间性能是O(n)。
③冒泡排序每次可以确定一个数最终位置。如升序冒泡,每次第二个for循环都可以确定该次的最小数,并
将该最小数放在最前面。
- bubble_sort
- bubble_sort
- bubble_sort
- Bubble_sort
- bubble_sort
- Bubble_sort
- BUBBLE_SORT
- Bubble_Sort & Select_Sort
- algrothm_Future_Two(Bubble_Sort)
- 冒泡排序(bubble_sort)详解
- 冒泡排序(Bubble_Sort)
- 冒泡排序(Bubble_Sort)
- 实现bubble_sort<冒泡法>
- bubble_sort中change的作用举例
- 排序算法的时间复杂度比较(quick_sort;bubble_sort)
- Data Structures-1 bubble_sort中的change作用举例
- 一天一排序之“冒泡排序(Bubble_sort)”
- 如何使用qsort进行排序,用bubble_sort实现各类型排序
- 【转】直接运行内存中的 程序
- 人生历程——之感
- Android原理揭秘系列之View、ViewGroup
- android学习笔记(2)---第一个Android应用程序的创建、修改、打包、卸载等常用操作
- 对图片处理C#相关代码 压缩指定图片
- bubble_sort
- 增长气血的捷径——山药薏米芡实粥
- 如何将ubuntu文件夹中文名改为英文
- Java程序员从笨鸟到菜鸟之(十五)Html基础积累总结(下) .
- js+ajax+dom+php+mysql实现goolgoal suggest 效果
- Google+就是Google+社交,但真不是社交网络
- Iphone代码创建视图
- 在超级计算机里进化出智能程序,将其转移到机器人设备上。哇!智能机器人是否诞生
- u-boot启动全过程分析