详解冒泡排序
2014-06-20 10:13
239 查看
现有数组a
思想: 将较小的数(或较大的数)前移;主要有两种求解方法,冒泡是从前半段还是从后半段开始
(1)基本
冒泡数组首部开始:
(2)改进
设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。
(3)改进2
记录一次冒泡后最后交换的位置
代码如下:
参考来源: MoreWindows 博客 http://blog.csdn.net/morewindows/article/details/6657829
思想: 将较小的数(或较大的数)前移;主要有两种求解方法,冒泡是从前半段还是从后半段开始
(1)基本
冒泡数组首部开始:
void BubbleSort(type a[],int n) { int i,j; type temp; for(i=0;i<n;i++) { for(j=1;j<n-i;j++) { if(a[j-1]>a[j]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } } } }冒泡从数组尾部开始:
//冒泡从后半段开始 基本冒泡排序 void BubbleSort_1(type a[],int n) { int i,j; type temp; for(i=0;i<n;i++) { for(j=n-1;j>i;j--) { if(a[j-1]>a[j]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } } } }
(2)改进
设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。
//冒泡排序改进方法1 冒泡从数组首部开始 void BubbleSort1(type a[], int n) { int i,j; type temp; bool flag; //交换标志位 for(i=0;i<n;i++) { flag=false; for(j=1;j<n-i;j++) { if(a[j-1]>a[j]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; flag=true; } } if(!flag) //如果没有发生交换 说明已完成排序 return; } } //冒泡排序改进方法1 冒泡从数组尾部开始 void BubbleSort1_1(type a[], int n) { int i,j; type temp; bool flag; //交换标志位 for(i=0;i<n;i++) { flag=false; for(j=n-1;j>i;j--) { if(a[j-1]>a[j]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; flag=true; } } if(!flag) //如果没有发生交换 说明已完成排序 return; } }
(3)改进2
记录一次冒泡后最后交换的位置
代码如下:
//冒泡排序改进2 记录最后发生交换的记录 冒泡从数组首部开始 void BubbleSort2(int a[], int n) { int i,j; type temp; int flag; //最后一次交换的位置 flag=0; for(i=0;i<n;i++) { for(j=1;j<n-flag;j++) { if(a[j-1]<a[j]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } flag=j-1; } } //冒泡排序改进2 记录最后发生交换的记录 冒泡从数组尾部开始 void BubbleSort2_1(int a[], int n) { int i,j; type temp; int flag; //最后一次交换的位置 flag=0; for(i=0;i<n;i++) { for(j=n-1;j>flag;j--) { if(a[j-1]>a[j]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } flag=j+1; } }
参考来源: MoreWindows 博客 http://blog.csdn.net/morewindows/article/details/6657829
相关文章推荐
- 数据结构排序系列详解之三 冒泡排序
- 经典算法详解 之 冒泡排序
- 【内部排序】四:冒泡排序(Bubble Sorting)详解与代码
- [031]八大排序算法详解——冒泡排序
- hdoj2037详解(附带浅谈冒泡排序)
- 【17】-冒泡排序详解
- java 算法之冒泡排序实例详解
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- php冒泡排序与快速排序实例详解
- 经典算法详解 之 冒泡排序
- 冒泡排序和直接选择排序详解
- 冒泡排序原理详解
- 冒泡排序深入详解
- PHP冒泡排序详解
- 冒泡排序(bubble_sort)详解
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
- Bubble Sort (排序详解 之 冒泡排序)
- 冒泡排序详解7-20
- 【17】-冒泡排序详解
- 冒泡排序详解(从小到大)