排序算法应该是我们接触编程之后第一个稍微有点复杂的算法了,而排序算法在我们今后的编程生活中又非常的常见,我整理了几个基础的排序算法,对于初学者理解算法的时间空间复杂度还是很有帮助滴!可以让大家更直观的了解缩减算法的时间复杂度的重要性!
冒泡排序应该是第一个简单的排序了,其优缺点更为明显,优点是可以帮助初学者更容易的理解算法的历程,而缺点更加明显:耗费大量不必要的时间,算法复杂度太大,一旦数据量大一点,冒泡排序会显得力不从心.....此时我们就需要考虑新的算法解构去降低时间复杂度,可以用选择排序,插入排序......
接下来我们用c语言实现冒泡排序并观察他的算法实现历程,分析其时间复杂度:
所谓冒泡排序,就是在一组无序数中,较小数逐渐的向上升,就像泡泡一样,故我们称其为冒泡排序法。
算法实现如下:
#include#include //输出数组元素 void print(int data[] ,int n) { for(int i=0;i data[i+1]) {m=data[i];data[i]=data[i+1];data[i+1]=m;} } print(data,n); } } void selectSort( int data[] ,int n ) { int min=data[0],m,k=0,t; for(int i=0;i =i;k--) { if(data[k]<=m) {m=data[k];t=k;} } data[t]=data[i]; data[i]=m; print(data,n); } } void insertSort( int data[] ,int n ) { int t,j; for(int i=1;i =0 && t get) { right = mid - 1; } else { left = mid + 1; } } for (j = i-1; j >= left; j--) { data[j+1] = data[j]; } data[left] = get; print(data,n); } } void qBubbleSort( int data[] ,int n ) { int m; int con=0; for(int k=0;k data[i+1]) {con++;flag=0;m=data[i];data[i]=data[i+1];data[i+1]=m;} } if(con!=0&&flag==0) print(data,n); else if(con==0) {print(data,n);break;} } }
(上课了先.....待会再改。。。)



