冒泡排序的基本逻辑是每轮比较得出区间中最大或者最小的值并且将该值放到合适的位置,并且区间会随着比较的进行而缩小,直到区间缩小到最小,排序完成。该算法就像水泡一个一个的浮出水面一样,所以有一个形象的名字-冒泡排序。
实现代码如下,附简单分析
package com.llg.mybatis;
import org.junit.Test;
import java.util.Arrays;
public class TestBubble {
@Test
public void sortArr(){
int[] arr = {1, 3, 54, 3, 32, 1, 2, 32};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
private void bubbleSort(int[] ints){
for(int i = ints.length - 1; i > 0; i--){
//区间一开始是整个数组,随着i--区间不断缩小
for(int j = i - 1; j >= 0; j--){
//区间最末尾的值依次和区间中的其他值进行比较,如果附合交换条件就交换
if(ints[i] > ints[j]){
//改变这里的比较符可以实现倒叙和正序的切换
int temp = ints[i];
ints[i] = ints[j];
ints[j] = temp;
}
}
}
}
}