冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序
/**
* 冒泡法排序
*/
private void bubblingSort() {
ArrayList<Integer> dataSource = buildDataSource();
Log.i("bubblingSort-start", System.currentTimeMillis() + "");
for (int i = 0, len = dataSource.size() - 1; i < len; i++) {
for (int j = len - 1; j > i; j--) {
if (dataSource.get(j) < dataSource.get(j - 1)) {
int temp = dataSource.get(j);
dataSource.set(j, dataSource.get(j - 1));
dataSource.set(j - 1 ,temp);
}
}
}
Log.i("bubblingSort-end", System.currentTimeMillis() + "");
Log.i("bubblingSort", dataSource.toString());
}
/**
* 下沉法排序 */
private void sinkSort() {
ArrayList<Integer> dataSource = buildDataSource();
Log.i("sinkSort-start", System.currentTimeMillis() + "");
for (int i = 0, len = dataSource.size(); i < len; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (dataSource.get(j) > dataSource.get(j + 1)) {
int temp = dataSource.get(j);
dataSource.set(j, dataSource.get(j + 1));
dataSource.set(j + 1 ,temp);
}
}
}
Log.i("sinkSort-cost", System.currentTimeMillis() + "");
Log.i("sinkSort", dataSource.toString());
}
private ArrayList<Integer> buildDataSource() {
ArrayList<Integer> dataSource = new ArrayList<Integer>();
dataSource.add(3);
dataSource.add(5);
dataSource.add(15);
dataSource.add(1);
dataSource.add(7);
dataSource.add(25);
dataSource.add(71);
dataSource.add(13);
dataSource.add(23);
return dataSource;
}