冒泡排序
基本思想:第一个元素到最后一个元素进行两两比较,当需要时交换这两个元素的位置
时间复杂度: 最坏O(n*n)、空间复杂度O(1) 用来存放临时变量
心得:千万别想着一口吃个胖子,心中知道肯定就是双层for循环 ,上来就写两个循环,
会把自己绕迷的,正确的做法是 :首先明白原理及细节(知道细节是为了改进),先写1层,知道这1层实现的功能,再给它套 上一层,慢慢改进
就自然而然的答对了
public int[] BubbleSort(int[] sourceArray) {
int[] array = Arrays.copyOf(sourceArray, sourceArray.length);
int temp;
for(int i=0;i<array.length;i++)
for(int j=0;j<array.length-i-1;j++) {//这个i减不减效果都一样,但会少执行那些已经比较过的
if(array[j]>array[j+1]) {
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
return array;
}
动画演示如下(复制参考:https://mp.weixin.qq.com/s/vn3KiV-ez79FmbZ36SX9lg)