首页 > 代码库 > 冒泡排序算法
冒泡排序算法
冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。
1 #include "stdafx.h" 2 #include <iostream> 3 using namespace std; 4 void Swap(int &a, int &b) 5 { 6 int temp = a; 7 a = b; 8 b = temp; 9 }10 11 void Bubble1(int *array, int length)12 {13 for (int i=length-1;i>0;--i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i>0而不是i>=0)。14 {15 for (int j=0;j<i;++j)16 {17 if (array[j]>array[j+1]) //升序(降序 < )18 {19 Swap(array[j], array[j+1]);20 }21 }22 }23 }24 25 void Bubble2(int *array, int length)26 {27 for (int i=0;i < length - 1;++i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i < length - 1)。28 {29 for (int j=1;j < length - i;++j)30 {31 if (array[j-1]>array[j]) //升序(降序 < )32 {33 Swap(array[j-1], array[j]);34 }35 }36 }37 }38 39 //设置标志位优化的及时终止版40 void Bubble3(int *array, int length)41 {42 bool swapHappend;43 for (int i=0;i < length - 1;++i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i < length - 1)。44 {45 swapHappend = false;46 for (int j=1;j < length - i;++j)47 {48 if (array[j-1]>array[j]) //升序(降序 < )49 {50 Swap(array[j-1], array[j]);51 swapHappend = true;52 }53 }54 if (!swapHappend)55 break; 56 }57 }58 59 int _tmain(int argc, _TCHAR* argv[])60 {61 int array[] = {2,9,6,3,8,5,1,4,7};62 63 /*Bubble1(array, 9);*/64 Bubble2(array, 9);65 /*Bubble3(array, 9);*/ 66 67 for (int i=0;i<9;++i)68 cout<<array[i]<<endl;69 70 getchar();71 return 0;72 }
冒泡排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。