常用排序算法的Java实现(3)-冒泡排序

冒泡算法应该是知名度最高的算法了,因为这个算法的执行过程和水泡冒出水面的过程类似而得名。
方法
1.先将序列中的第一个记录R0与第二个记录R1比较,若前者大于后者,则两个记录交换位置,否则不交换
2.然后对新的第二个记录R1与第三个记录R2作同样的处理
3.依次类推,直到处理完第n-1个记录和第n个记录
从(R0,R1)到(Rn-2,Rn-1)的n-1次比较和交换过程称为一次起泡
经过这次起泡,n个记录中最大者被安置在第n个位置上
4.此后,再对前n-1个记录进行同样处理,使n-1个记录的最大者被安置在整个序列的第n-1个位置上。
5.然后再对前n-2个记录重复上述过程……,这样最多做n-1次起泡就能完成排序
冒泡排序是通过相邻记录之间的比较与交换,使值较大的记录逐步从前(上)向后(下)移,值较小的记录逐步从后(下)向前(上)移,就像水底的气泡一样向上冒,故称为冒泡排序
        public int[] bubbleSort(int[] source){
                int size = source.length;
                for (int i=size -1; i>0; i--){
                        for (int j=0; j<i; j++){
                                if (source[j] > source[j+1]){
                                        swapElement(j,j+1,source);
                                }
                        }
                        printIntArray(source);
                }
                return source;
        }
        
        private void swapElement(int i, int j, int[] values){
                int temp = values[i];
                values[i] = values[j];
                values[j] = temp;
        }

冒泡排序也是稳定排序。算法的复杂度为O(n[sup]2[/sup])



转载自  开发者的天空

你可能感兴趣的:(java,.net,算法,J#)