排序算法之冒泡排序
来源:互联网 发布:股票分时数据 编辑:程序博客网 时间:2024/05/17 06:33
学习数据结构, 大都是从冒泡排序学起, 冒泡排序是最简单基础的排序。
冒泡排序思路分析(从小到大排序):
1、从数组尾部开始, 比较相邻的两个元素,如果第一个比第二个大,就交换他们
2、对每一对元素做相同的操作, 直到数组首部,至此,一趟排序结果,最小的元素浮在了第一个元素的位置
3、除了第一个已经排序的元素,针对其他元素重复以上的步骤。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何元素。
冒泡排序伪代码和时间复杂度分析:
bubbleSort(A, length)
{
for i<- 1 to length//运行时间A
for i <-length-1 to i//运行时间A
do if A[i] > A[i-1]//运行时间B
then swap([A[i], A[i-1[)///运行时间C
}
A,B,C为常量的运行时间, 总运行时间为(1+2+.....N)(A+B+C) = Kn(n-1)/2, K为常量, 时间复杂度为O(n^2)
C++代码实现:
#include <stdio.h>typedef void (*Func)(int *a, int *b);void swap(int *a, int* b){int c = *a;*a = *b;*b = c;}/*judge if it is content*/void is_content(int *a, int *b){if (*a < *b){swap(a, b);}}void bubble_sort(int* array, int length, Func func){if (NULL==array || length<=0){return;}for (int i=0; i<length; i++){for(int j=length-1; j>i; j--){func(&array[j], &array[j-1]);}}}void print(int* array, int length){if (NULL==array || length<=0){return;}for (int i=0; i<length; ++i){printf("%d\t", array[i]);}printf("\n");}int main(int argc, char** argv){int array[5] = {1, 3, 2, 5, 4};bubble_sort(array, 5, is_content);print(array, 5);return 0;}
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 【排序算法】之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之-冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 一、什么是OpenGL
- Oracle并行服务器(OPS)就是RAC的前身
- VC中操作excel表格 ListCtrl数据导出到Excel
- 如何设计好部落格的十个技巧
- linux中mount命令的基本用法
- 排序算法之冒泡排序
- 微信公众平台开发[5]-开发模式-高级功能-获取access_token
- Android基础-java的IO流
- C++ prime 13.14题
- 颜色文字值 和 颜色对象 互换工具
- JSP页面如何调用到.class文件【原创】
- 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。
- NC57双击表体行弹框
- OpenCv:IplImage,Mat和Qt:QImage之间的快速转换