冒泡排序法
来源:互联网 发布:同步带设计软件下载 编辑:程序博客网 时间:2024/06/05 16:20
一、冒泡法
1、基本思想:用关键字从剩余所有元素第一个开始依次进行比较,每一趟找出序列最大的元素沉在最后,重复操作。若遇到逆序进行位置交换,接着用较大值进行后面的比较过程。
2、举例: 将arr[5]={5,2,9,6,4,1}用冒泡法进行排序
(1)第一趟:用arr[0]=5和其余元素依次进行比较。
5 > 2,二者位置交换; arr[5]={2,5,9,6,4,1}
5 < 9,位置不变,然后用9去和后边的元素进行比较;arr[5]={2,5,9,6,4,1}
9 > 6,二者位置交换;arr[5]={2,5,6,9,4,1}
9 >4,二者位置交换;arr[5]={2,5,6,4,9,1}
9 > 1,二者位置交换;arr[5]={2,5,6,4,1,9}
(2)第二趟:用arr[1]=5和其余所有元素进行比较。
5 > 2,位置不变,arr[5]={2,5,6,4,1,9}
5 < 6,位置不变,然后用6去和后边的元素进行比较;arr[5]={2,5,6,4,1,9}
6 > 4,二者位置交换;arr[5]={2,5,4,6,1,9}
6 > 1,二者位置交换,arr[5]={2,5,4,1,6,9}
(3)第三趟:用arr[2]=4和其余元素进行比较。
4 > 2,位置不变,arr[5]={2,5,4,1,6,9}
4 < 5,二者位置交换,然后用5和后边的元素进行比较;arr[5]={2,4,5,1,6,9}
5 > 1,二者位置交换,arr[5]={2,4,1,5,6,9}
(4)第四趟:用arr[3]=1和其余元素进行比较。
1 < 2,二者位置交换,然后用2和后边的元素进行比较;arr[5]={1,4,2,5,6,9}
2 < 4,位置不变,然后用4和后边剩余元素进行比较;arr[5]={1,2,4,5,6,9}
4 < 5,位置不变,arr[5]={1,2,4,5,6,9}
所以排序结果为:arr[5]={1,2,4,5,6,9}
3、稳定性:冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,不用交换;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,也不会交换,相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
4、时间复杂度:最坏时间复杂度为O(n^2)
#include<stdio.h>void BubbleSort(int arr[], int len){int tmp;bool mark = false;for (int i = 0; i < len-1; i++){mark = false;for (int j = 0; j < len - 1 - i; ++j){if (arr[j]>arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];2arr[j + 1] = tmp;mark = true;}}//printf("i = %d\n", i);if (!mark){break;}}}int main(){ int arr[] = {263,29,6,3287,232,8,23,89,63,23,7,9};int len = sizeof(arr) / sizeof(arr[0]); BubbleSort(arr, len);for(int i=0;i<len;i++){ printf("%5d",arr[i]);}return 0;}
- 【排序】冒泡排序法
- 常用排序-冒泡法排序
- 排序法之冒泡排序
- php排序&冒泡法排序
- 排序之冒泡排序法
- 排序算法--冒泡排序法
- 【PHP】冒泡排序法排序
- 排序算法--冒泡排序法
- 冒泡法排序
- 排序:冒泡法
- 冒泡排序法
- 冒泡法排序
- 冒泡法排序
- 冒泡排序法
- java 冒泡排序法
- 冒泡法排序
- 冒泡法排序
- 冒泡法排序
- 数据结构编程笔记十七:第六章 树和二叉树 赫夫曼树的实现
- 史上最科学!Swift 3 UITableView最佳实践 XIB极速实现UITableViewCell,UITableViewHeaderFooterView
- requests库入门-5-带参数的请求类型
- 微服务的设计原则
- JVM笔记
- 冒泡排序法
- 狄克斯特拉算法(入门)
- Java 割圆术球π
- Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(三)
- MATLAB 视角调整
- 基于注解的DI
- [PTA] 7-22 龟兔赛跑
- linlong 1157
- ISCSI网络存储服务配置