有一些数字,按从小到大排列。 3,1,6,5,4,2
原理:第一位上的数字和第二位上的比较,如果第一位大于第二位上的数字,则互换,否则不变。然后再比较第二位和第三位上的数字,如果第二位大于第三位则互换,小于不变,依次类推,全部比较完后,最大的数就到了最后一位,第二轮再次从第一位开始比较,但是这一轮比较到N-1位 ,因为最后一个数就是最大的,不用比较。第三轮比较到N-2位。。。。。。
实现代码 JAVA
public class Test1{public static void main(String[] args)
{
int [] i = new int[]{5,6,1,3,2,4,8,7};
Test1 t = new Test1();
t.bubbleSort(i);
t.printArr(i);
}
public void bubbleSort(int []arr) {
for (int x=0;x<arr.length;x++)
{
for(int y=0;y<arr.length-x-1;y++) {
if(arr[y]>arr[y+1]) {
//如果前一位大于后一位则换位,这里是一个异或小技巧,不用第三方变量可实现X于Y的互换
arr[y] = arr[y]^arr[y+1];
arr[y+1] = arr[y]^arr[y+1];
arr[y] = arr[y]^arr[y+1];
}
}
}
}
public void printArr(int []arr) {
System.out.print("[");
for(int i=0;i<arr.length;i++) {
if(i!=arr.length-1) {
System.out.print(arr[i]+",");
}else {
System.out.print(arr[i]+"]");
}
}
}
}