首先要讲的是冒泡算法。时间复杂度达到了0(n^2),几乎你可以认为在n无限大时,达到了n^n的指数级别时间复杂度,不适用于大量数据的排序。但在小部分数组排序时,冒泡排序的代码最为简洁,方便书写(如果不考虑STL里的sort(),这之后还会提到)。
思路如下:
1.将每一次的最大值/最小值依次放到数组的队列尾/首。这需要依次比较第1-2,2-3,,(n-1)-n项。之后只需要比较1-2,2-3,,(n-2)-(n-1)项。
2.一直到n=1时,排序结束。
按照定义我写了两种代码,分别体现了不同的编程思路:
for(i=0;i<n;i++)
for(j=1;j<n-i;j++) //
if(a[j-1]>a[j] swap(a[j-1],a[j]);