排序案例
3 | 2 | 6 | 2 | |
第一步 | 2 | 3 | 6 | 2 |
第二步 | 2 | 3 | 6 | 2 |
第三步 | 2 | 3 | 2 | 6 |
这样就完成了一轮排序
按照此法直至该序列变为有序序列
2 | 3 | 2 | 6 | |
第一步 | 2 | 3 | 2 | 6 |
第二部 | 2 | 2 | 3 | 6 |
算法说明
- 将相邻的俩个元素进行比较,如果第二个比第一个小则交换他们俩个
- 对每一轮的数都进行第一步的比较,直到每一轮最大的数再此轮的最后一个位置(每一轮会确定一个数排在最后)
- 重复第一步和第二步直到该序列变为有序序列
package sort;
import java.util.Arrays;
public class Bubble {
public static int [] sort(int [] sourceArray){
int [] arr= sourceArray.clone();
for(int i=1;i<arr.length;i++){//需要排序的轮次
// 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
boolean flag = true;
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
int tmp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag= false;
}
}
//判断是否已经是有序序列,如果是,则循环中断.
if (flag) {
break;
}
}
return arr;
}
public static void main(String[] args) {
int arrs[]={50,11,2,4,5,48};
System.out.println(Arrays.toString(sort(arrs)));
}
}