算法之 冒泡排序
简介
排序算法分为简单排序和复杂排序,而冒泡排序是简单排序中一种,冒泡排序的思想是,假设一个集合有N项,每一次排序都将最大的项移动至最后,经过N-1次排序后,最后的集合是从小到大的顺序
package com.jaws.algorithm.sort;
import java.util.Set;
public class SortAlgorithm {
/**
* 冒泡(Bubbling)排序
*
*/
public static void bubblingSort(int[] arrayInt){
for(int k=arrayInt.length-1; k>1 ; k-- ){
//第一次排序需要循环n-1次,第二次排序需要循环n-2次,依次类推,最后一次排序只需要比较[0]和[1]位置的项,只需循环1次,
<span style="white-space:pre"> </span>//因为每次排序需要循环次数是递减的,所以通过外层循环控制当此层的循环的次数
for (int i = 0; i < k; i++) {
if (arrayInt[i]>arrayInt[i+1]) {
//交换位置,把较大项往后移
int temp = arrayInt[i];
arrayInt[i] = arrayInt[i+1];
arrayInt[i+1] = temp;
}
}
}
}
}
测试程序:
<pre name="code" class="java">package com.jaws.array;
import java.util.Arrays;
import com.jaws.algorithm.sort.SortAlgorithm;
public class ArrayTestClient {
static class Test{
public static void main(String[] args) {
NoSequenceArray noSeqArray = new NoSequenceArray(10);
noSeqArray.add(3);
noSeqArray.add(20);
noSeqArray.add(8);
noSeqArray.add(33);
noSeqArray.add(15);
SortAlgorithm.bubblingSort(noSeqArray.getArray());//通过自己写的冒泡排序替代JDK提供Arrays.sort
// Arrays.sort(noSeqArray.getArray());
System.out.println("排序后: "+Arrays.toString(noSeqArray.getArray()));
}
}
}
输出结果:
排序前: [3, 20, 8, 33, 15, 0, 0, 0, 0, 0]排序后: [0, 0, 0, 0, 0, 3, 8, 15, 20, 33]