冒泡排序算法
package test2;
import java.util.Arrays;
public class BubbleSort {
//相邻位置的值比较,把大的放在后面
//最多进行n-1次排序,每次排序最多n-i次比较,因此sort方法会造成多余操作
public void sort(int[] n) {
//第一个for循环表示第几次循环
for(int i=1;i<n.length;i++) {
//第二个for循环表示该次循环进行几次比较
for(int j=0;j<n.length-i;j++) {
//判断比较是否进行换位
if(n[j]>n[j+1]) {
int temp = n[j];
n[j] = n[j+1];
n[j+1] = temp;
}
}
System.out.print("第"+i + "次: ");
Arrays.asList(n).stream().forEach(x->{
for(Integer k:x){
System.out.print(k+"\t");
}
System.out.println();
;});
}
}
//增加标志位,不会在循环完成进行多余循环。
public void sort2(int[] n) {
//第一个for循环表示第几次循环
for(int i=1;i<n.length;i++) {
//第二个for循环表示该次循环进行几次比较
int comFg=0;
for(int j=0;j<n.length-i;j++) {
//判断比较是否进行换位
if(n[j]>n[j+1]) {
int temp = n[j];
n[j] = n[j+1];
n[j+1] = temp;
comFg+=1;
}
}
System.out.print("第"+i + "次: ");
Arrays.asList(n).stream().forEach(x->{
for(Integer k:x){
System.out.print(k+"\t");
}
System.out.println();
;});
if(comFg<2){
break;
}
}
}
public static void main(String[] args) {
BubbleSort s = new BubbleSort();
// int[] n = {1,17,3,6,15,2,56,13};
int[] array1 = {11,9,8,7,16,5,4,1,22};
int[] array2=Arrays.copyOf(array1, 9);
s.sort(array1);
//sort2排序
System.out.println("----------sort2排序------------");
s.sort2(array2);
// s.print(n);
}
}
浙公网安备 33010602011771号