一冒泡排序
对数组各元素从头到尾依次比较相邻的两个元素是,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)
下面是具体实现(按照从小到大的规则,如果想从大到小。则把代码if(arr[i] > arr[j])换成if(arr[i] < arr[j])即可):
JAVA代码:
对数组各元素从头到尾依次比较相邻的两个元素是,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)
下面是具体实现(按照从小到大的规则,如果想从大到小。则把代码if(arr[i] > arr[j])换成if(arr[i] < arr[j])即可):
JAVA代码:
public class Maopao {
public void sort(int[] arr){
System.out.println("排序前:");
for(int i = 0; i < arr.length; i++ ){
System.out.printf("%3s", arr[i]);
}
System.out.println();
System.out.println("----------------------------------");
for(int i = 0; i < arr.length; i++){
for(int j = i + 1; j < arr.length; j++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
System.out.println("第"+(i+1)+"次排序后:");
for(int k = 0; k < arr.length; k++){
System.out.printf("%3s", arr[k]);
}
System.out.println();
}
System.out.println();
System.out.println("----------------------------------");
System.out.println("完成排序后:");
for(int i = 0; i < arr.length; i++){
System.out.printf("%3s", arr[i]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
int[] a = {10, 32, 1, 9, 5,3, 7, 12, 0, 4,4, 3};
Maopao mp = new Maopao();
mp.sort(a);
}
}