冒泡排序
冒泡排序它的基本思想是:两两比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。
private static void bubbleSort(List<Integer> list) {
boolean flag = true;//判断互换状态,如果一轮下拉已经不互换了,说明排序已经正确了
for (int i = 0;i < list.size() && flag;i++) {
flag = false;//制假,如果这一轮循环对比中没有反序则推出外循环
for (int j = list.size()-1;j > i;j--) {
if (list.get(j) < list.get(j-1)) {
//交换值
int temp = list.get(j-1);
list.set(j-1,list.get(j));
list.set(j,temp);
//制真,说明还有反序,需要继续循环
flag = true;
}
}
}
}
选择排序法
冒泡排序的思想就是不断的交换,通过交换完成最终的排序。选择排序法是在排序时找到合适的关键字再进行交换。
private static void selectSort(List<Integer> list) {
int main;//每次对比的主键
for (int i = 0;i < list.size(); i++) {
main = i;
for (int j = i + 1; j < list.size(); j++) {
if (list.get(main) > list.get(j)) {
main = j;//如果反序则记录
}
}
if (main != i) {//判断本轮循环是否遇到反序,如果遇到反序则交换数据
int temp = list.get(i);
list.set(i,list.get(main));
list.set(main,temp);
}
}
}