数据结构与算法之冒泡排序(C++)
在c语言里面算法和数据结构是非常重要的,同样在C++中也是不可缺少的一部分,算法的思想有很大的相似之处,如果你对C语言的数据结构与算法非常熟悉的话,那么对于C++的数据结构也是非常好理解的。首先我们来讲一讲最基本的排序方式--冒泡排序法
冒泡排序
对于冒泡排序法,大家学过C语言的应该都不会陌生,他的中心思想也比较好理解,用C++来做的话,原理是一样。
比如我们有n个无序的数,需要对他进行排序,那么我们就需要对这些数扫描n-1次
当我们扫描第一次的时候,就会从左到右依次比较相邻两个数之间的大小,如果前面的数比后面的数大则进行交换,反之不交换。
如果是n个数,扫描第一次时,那么他们的比较次数为n-1次,
扫描第二次时,他们的比较次数是n-2次
依次类推,扫描第i次时,比较次数为n-i-1次
接下来用程序更好的理解一下
1 #include<iostream> 2 3 using namespace std; 4 5 void BubbleSort(int list[] , int n); 6 7 int main() 8 { 9 int a[] = {2,4,6,8,0,1,3,5,7,9}; 10 BubbleSort(a,10); 11 for(int k=0; k<10; k++) 12 cout << a[k] <<endl; 13 14 return 0; 15 } 16 17 void BubbleSort(int list[] , int n) 18 { 19 for(int i=0; i<n-1; i++) 20 { 21 for(int j=0; j<n-i-1; j++) 22 { 23 if(list[j]>list[j+1]) 24 swap(list[j],list[j+1]); 25 } 26 27 } 28 29 }