[C]冒泡排序
来源:互联网 发布:在线选片系统源码程序 编辑:程序博客网 时间:2024/04/29 10:11
冒泡排序的时间复杂度为O(n2)
长度为N的数组,需要扫描N-1(1->N-1)次,每次扫描需要比较N-i次(i表示第i次扫描),每次扫描之后,可以找出最大的一个元素并将其放到数组末尾。
时间复杂度=(N-1) + (N-2) + (N-3) + (N-3) + … + 1=(N-1)*(N-2)/2=O(n2)
可以设置一个标志位switched来减少扫描次数。每次扫描之前switched=FALSE,如果本次扫描发生了元素交换,switched就置为TRUE,下次扫描就检查switched,如果为真就继续,否则结束扫描。
C实现
#include <stdio.h>#define TRUE 1#define FALSE 0void bubbleSort(int L[],int Len){ int i,j,tmp; int switched = TRUE; for(i=0;i<Len-1&&switched;i++){ switched = FALSE; for(j=0;j<Len-i-1;j++){ if(L[j] > L[j+1]){ tmp = L[j]; L[j] = L[j+1]; L[j+1] = tmp; switched = TRUE; } } } printf("扫描次数:%d",i);}int main(){ int L[10] = {9,8,7,6,5,4,3,0,1,2}; int i; bubbleSort(L,10); for(i=0;i<10;i++){ printf("%d-",L[i]); } getchar(); return 0;}
python实现
#冒泡排序def bubbleSort(L): length = len(L) for i in range(length-1): for j in range(length-i-1): if L[j] > L[j+1]: L[j],L[j+1] = L[j+1],L[j]if __name__ == '__main__': l = [9,8,7,6,5,4,3,2,1] bubbleSort(l) print l
0 0
- C#:冒泡排序
- 冒泡排序 C数据结构
- 冒泡排序 C源码
- 冒泡排序(C#)
- 冒泡排序实例(C#)
- 【C#】[算法]冒泡排序
- C#--冒泡排序
- C语言冒泡排序
- 冒泡排序(C语言)
- C语言--冒泡排序
- 冒泡排序(C++)
- C语言-冒泡排序
- C语言冒泡排序
- 冒泡排序体会c
- c 冒泡排序
- c语言冒泡排序
- C 冒泡排序 练习
- c语言冒泡排序
- 第三周项目三——程序的多文件组织
- kinetic client 之BaseAsync
- Python图论算法(四)——bellman_ford
- R语言数据分析系列之二
- 再探MFC(三)菜单
- [C]冒泡排序
- Android中Adapter的getView方法复用view机制
- setBackgroundColor
- 【Bash百宝箱】adb
- 实验二 类和对象
- 实现可拖放的购物车
- 【Android 个人理解(三)】从源码剖析如何实现实现全屏效果
- kineti client 之baseclient
- android基础学习之mediaplayer基本方法关系