标签:style blog color io os ar for div sp
冒泡排序算法的时间复杂度是什么?
时间复杂度是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 }
标签:style blog color io os ar for div sp
原文地址:http://www.cnblogs.com/kira2will/p/3978146.html