package bubblesort;
public class Init {
//交换
void Swap(int a[],int x,int y){
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
//打印出结�?
void Print(int a[]){
for(int x: a){
System.out.print(x);
}
}
//选择排序 选择一个数后,与其余每一数比较。
public void ChanceSort(int[]a){
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[i]>a[j]){
Swap(a,i,j); //下面两句代码是为了在控制台上看到排序的整个变化过程。
Print(a);
System.out.println("");
}
}
}
Print(a);
}
//冒泡排序1
public void BubbleSortFirst(int a[]){
for(int i=0;i<a.length-1;i++)//循环次数
for(int j=0;j<a.length-i-1;j++){
//-i,是因第i次循环把大的数放到最后,则要比较的个数也相应地减少i,因为最后面的数组已经比较好了,不用再比较。
//-1是因为两两比较次数,因最后一个元素无法两两
if(a[j]>a[j+1]){
Swap(a, j, j+1);
Print(a);
System.out.println("");
}
}
Print(a);
}
//冒泡排序2
public void BubbleSortSecond(int a[]){
for(int i=0;i<a.length-1;i++){
for(int j=a.length-1;j>i;j--){
if(a[j]>a[j-1]){
Swap(a, j, j-1);
}
}
}
Print(a);
}
//冒泡排序3
boolean flag = true;
public void BubbleSortThird(int a[]) {
for(int i=0;i<a.length-1;i++){
flag = false;
for(int j=a.length-1;j>i;j--){
if(a[j]>a[j-1]){
Swap(a, j, j-1);
flag = true;
}
}
}
Print(a);
}
}
//test
package test;
import bubblesort.Init;
public class Test {
public static void main(String[] args) {
int []array ={9,1,5,8,3,7,4,6,2};
Init sort = new Init();
sort.BubbleSortThird(array);
}
}