经典排序之 冒泡排序
2016-03-24 21:33
309 查看
冒泡排序和选择排序一样是我们接触相对早的一种排序算法。下面简单讲解一下冒泡排序的思想:
算法思想:
冒泡排序,顾名思义,排序的过程就像气泡在水里上升一样。就是对数组进行不断地扫描,每当遇到比标记的数据大的元素就交换两个数据。这样扫描一遍之后就会产生一个最小或最大的元素位于最终的位置上。之后进行第二遍扫描,第三遍......最终完成。
冒泡排序是一种稳定的算法,他的最好时间复杂度是O(n),就是在基本有序的情况下。最坏和一般情况下为O(n2)。
算法实现:
算法思想:
冒泡排序,顾名思义,排序的过程就像气泡在水里上升一样。就是对数组进行不断地扫描,每当遇到比标记的数据大的元素就交换两个数据。这样扫描一遍之后就会产生一个最小或最大的元素位于最终的位置上。之后进行第二遍扫描,第三遍......最终完成。
冒泡排序是一种稳定的算法,他的最好时间复杂度是O(n),就是在基本有序的情况下。最坏和一般情况下为O(n2)。
算法实现:
#include<iostream> using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } void bubbleSort(int *data, int length){ if(data == NULL || length < 0){ return ; } for(int i = 0; i < length; i++){ //扫描遍数 for(int j = i; j < length; j++){ //每一遍之中比较,进行交换 if(data[i] > data[j]){ swap(data[i], data[j]); } } } } int main(){ //测试例子 int str[] = {34, 23, 4, 78, 1, 0, 45, 9, 33, 6, 234}; int len = sizeof(str) / sizeof(int); bubbleSort(str, len); for(int k = 0; k < len; k++){ cout<< str[k]<< ' '; } return 0; }
相关文章推荐
- 找不到该项目,请确认该项目的位置的办法(转)
- HDU 2717Catch That Cow
- LeetCode#105. Construct Binary Tree from Preorder and Inorder Traversal
- 【Android压力测试】monkey压力测试(很全、很详细)
- 一个简单的分钱问题:用一毛二毛五毛组合一块
- linux下安装升级mysql到新版本(5.1-5.7)
- 初始mybatis (mybatis开发环境的搭建)
- 待整理
- bitmap heap scan
- poj-1503-java大数相加
- python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表
- 计算100以内的素数
- 约瑟夫环的变形
- nyoj1058 部分和问题
- C语言中堆和栈的区别
- zoj3587(kmp+dp)
- c# socket 异步
- BZOJ-1051 受欢迎的牛 Tarjan求强连通分量+缩点DAG
- 给出年、月、日,计算该日是该年的第几天
- 世界是数字的