[Algorithm]冒泡排序
本文是关于本人对冒泡排序的一些理解,如有错误,还望大神指正。 注:本文的排序都是指升序序列。 先来了解一下,冒泡排序是怎么排序的?原理是怎样的? 如下图,将每一个元素都与其后面的元素进行比较,每一轮过后,都将最大的元素放到最右侧,也就是像“冒泡”一样。 让我们看看每一轮“冒泡”后的结果,见下图。 冒泡排序算法–Java版 static void sort ( int [ ] arr ) { int temp ; //总共比较 n - 1 轮 for ( int i = 0 ; i < arr . length - 1 ; i ++ ) { //每轮比较 (n - 已确定好元素位置的个数 - 1) 次 for ( int j = 0 ; j < arr . length - 1 - i ; j ++ ) { if ( arr [ j ] > arr [ j + 1 ] ) { temp = arr [ j ] ; arr [ j ] = arr [ j + 1 ] ; arr [ j + 1 ] = temp ; } } } } 这样就可以将所有元素按照大小排好序,非常好。但是仔细想想,这样有什么弊端呢?如果是几个月前刚接触算法的我,回答这个问题,我肯定会说:这样都排好序了,不是挺好的么? 其实冒泡排序的效率是不高的,举个栗子就能明白了。体育课上老师让按大小个排成一队